工作时用到触发器要支持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', 1,@UNITSYS,convert(char(19),getdate(),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, '1', 1,@UNITSYS,convert(char(19),getdate(),20));
      end
     else if(@STATUS=0)
      BEGIN 
       INSERT INTO INCTABLE VALUES(@ESYSCODE, '1', 2,@UNITSYS,convert(char(19),getdate(),20));
      end 
     FETCH NEXT FROM ESYSCODES
     INTO @ESYSCODE
    END
   CLOSE ESYSCODES;
   DEALLOCATE ESYSCODES;
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值