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
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] 举报,一经查实,本站将立刻删除。