微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

工作时用到触发器要支持sqlserver 写的Demo 纪念下

 
Demo1:简单的触发器
 
CREATE TRIGGER D_EFILE1_0008_TRIGGER 
 ON D_EFILE1_0008
 AFTER INSERT,DELETE
 AS
  declare @SYSCODE varchar(32),@UNITSYS varchar(32);
  if (exists (select 1 from inserted) and not exists (select 1 from deleted))
   BEGIN 
    select @SYSCODE = SYSCODE,@UNITSYS=UNITSYS from INSERTED;
    INSERT INTO INCTABLE VALUES(@SYSCODE,'1',2,@UNITSYS,convert(char(19),getdate(),20));
   END
  else if (not exists (select 1 from inserted) and exists (select 1 from deleted))
   BEGIN
    select @SYSCODE = SYSCODE,@UNITSYS=UNITSYS from deleted;
    INSERT INTO INCTABLE VALUES(@SYSCODE,1,20));
   END
 
 
 
 
Demo2:复杂点的触发器
 
CREATE TRIGGER D_FILE1_0008_TRIGGER ON D_FILE1_0008 FOR UPDATE AS   IF UPDATE(STATUS)      declare @SYSCODE varchar(32),@UNITSYS varchar(32),@STATUS INT,@ESYSCODE varchar(32);    begin     select @SYSCODE = SYSCODE,@UNITSYS=UNITSYS,@STATUS=STATUS from INSERTED;    end    DECLARE ESYSCODES CURSOR FOR  select SYSCODE from D_EFILE1_0008  WHERE PSYSCODE=(select SYSCODE from INSERTED);    open ESYSCODES;    FETCH NEXT FROM ESYSCODES    INTO @ESYSCODE    WHILE @@FETCH_STATUS = 0     BEGIN      IF (@STATUS=1)       BEGIN        INSERT INTO INCTABLE VALUES(@ESYSCODE,20));       end      else if(@STATUS=0)       BEGIN         INSERT INTO INCTABLE VALUES(@ESYSCODE,20));       end       FETCH NEXT FROM ESYSCODES      INTO @ESYSCODE     END    CLOSE ESYSCODES;    DEALLOCATE ESYSCODES;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐