触发器基本使用

1、 after触发器(之后触发)
    a、 insert触发器
    b、 update触发器
    c、 delete触发器
2、 instead of 触发器 (之前触发)

触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETEUPDATE 语句所影响的行的复本。在执行 DELETEUPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。
Inserted 表用于存储 INSERTUPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

1.插入操作(Insert) 
  Inserted表有数据,Deleted表无数据 
2.删除操作(Delete) 
  Inserted表无数据,Deleted表有数据 
3.更新操作(Update) 
  Inserted表有数据(新数据),Deleted表有数据(旧数据)

示例:根据tb1表同步(增、删、改)tb2表

 --增加数据
CREATE TRIGGER insertTrg
ON tb1
FOR INSERT
AS
    DECLARE @id VARCHAR,@val VARCHAR
    SELECT @id = id FROM INSERTED
    SELECT @val = val FROM INSERTED
    
    INSERT INTO tb2
    VALUES(@id , @val)
    
--修改数据
CREATE TRIGGER updateTrg
ON tb1
FOR UPDATE
AS
    UPDATE tb2
    SET val = (SELECT val FROM INSERTED)
    WHERE  id = (SELECT id FROM INSERTED)

--删除数据    
CREATE TRIGGER delTrg
ON tb1
FOR DELETE
AS
    DELETE 
    FROM   tb2
    WHERE  id = (SELECT id FROM DELETED)

 

posted @ 2017-12-20 22:33  liessay  阅读(351)  评论(0编辑  收藏  举报