CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

请大虾帮忙改改这触发器??

楼主flyeq008()2006-03-01 09:52:11 在 MS-SQL Server / 基础类 提问

CREATE       TRIGGER       TR_upd_t2   ON   [DBO].[t1]    
  FOR   UPDATE    
  AS    
  IF   @@ROWCOUNT=0    
  RETURN    
  ELSE     if   @@rowcount<>0   and   checks='Y'  
                    BEGIN    
   
  这里写提示不能修改的语句  
                     
                    END                    
  ELSE     if     @@rowcount<>0   and   checks<>'Y'  
                  begin  
                                  UPDATE       t2  
  set   c1=a.c1,c2=a.c2,checks=a.checks   from   inserted   a  
                                  where   t2.id=a.id  
                    end  
   
  也就是说t1和t2具有相同的表结构和一样的记录,当t1的check(审核)是Y时,就不能对t1做修改了,当无审核就可修改且更新t2的相同记录。。 问题点数:20、回复次数:6Top

1 楼flyeq008()回复于 2006-03-01 10:06:02 得分 0

服务器:   消息   207,级别   16,状态   3,过程   TR_upd_t2,行   8  
  列名   'checks'   无效。  
  服务器:   消息   207,级别   16,状态   1,过程   TR_upd_t2,行   21  
  列名   'checks'   无效。  
   
  就是   and   checks='Y'   这里无效,,删掉又可以,但是必需要这样判断呀  
  Top

2 楼lsqkeke(可可)回复于 2006-03-01 10:11:05 得分 20

当t1的check(审核)是Y时,就不能对t1做修改了,  
  ------------  
  这个判断写在触发器中是没有用的,多余的!  
  你应该在应用程序中处理这个判断。审核的话就不更新T2  
   
  触发器TR_upd_t2   是你修改表1记录之后才执行的。已审核状态下@@rowcount<>0是等于0的,  
  那么你触发器中的第一个判断就没有用,且触发器也不执行Top

3 楼lsqkeke(可可)回复于 2006-03-01 10:12:26 得分 0

你只需要写:  
   
  CREATE       TRIGGER       TR_upd_t2   ON   [DBO].[t1]    
  FOR   UPDATE    
  AS    
  IF   @@ROWCOUNT=0    
        RETURN    
  ELSE                                      
        UPDATE       t2  
        set   c1=a.c1,c2=a.c2,checks=a.checks   from   inserted   a  
        where   t2.id=a.id  
  Top

4 楼flyeq008()回复于 2006-03-01 10:22:41 得分 0

那建个触发器,当审核是'Y'时,只要更新t1任一字段的话,就把t1的审核状态去掉。。行吗??Top

5 楼lsqkeke(可可)回复于 2006-03-01 10:28:03 得分 0

当审核是'Y'时,只要更新t1任一字段的话,就把t1的审核状态去掉。。  
   
  这个功能到不如在修改的update语句里面操作,确定修改时,将审核状态取消,  
  不用去建立一个触发器来单独实现Top

6 楼flyeq008()回复于 2006-03-01 10:33:22 得分 0

问题上现在修改不了应用程序,只能通过触发器来做哦。。。~~Top

相关问题

  • 这个触发器怎么写?请进!
  • 请问如何写这个触发器??
  • 请问这个触发器怎么写?
  • 请教,这个触发器怎么写?
  • 请教触发器的写法,帮忙写这个最简单的触发器
  • 请教触发器
  • 请教触发器
  • 请问这个触发器怎么写啊。(新手问)
  • 请教一下。这个触发器怎样写?
  • 请问这样的触发器怎样写?

关键词

  • 修改
  • 触发器
  • 审核
  • upd
  • rowcount
  • 状态
  • 更新
  • 无效
  • 记录
  • checks

得分解答快速导航

  • 帖主:flyeq008
  • lsqkeke

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo