触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。

Deleted 表用于存储 DELETE UPDATE 语句所影响的行的复本。在执行 DELETE UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

Inserted 表用于存储 INSERT UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

1.插入操作(Insert 

Inserted表有数据,Deleted表无数据 

 

2.删除操作(Delete 

Inserted表无数据,Deleted表有数据 

 

3.更新操作(Update 

Inserted表有数据(新数据),Deleted表有数据(旧数据)

 

--创建触发器,向表c1更新数据的时候,表c6也更新相同ID的数据
CREATE TRIGGER t_c7
ON c1
for UPDATE
AS
BEGIN
UPDATE  c6 SET c6.name = c1.name from inserted c1 WHERE  c6.id = c1.id
END
 
--创建触发器,向表c1删除数据的时候,表c6也删除相同id 的数据 
CREATE TRIGGER t_c8
ON c1
for DELETE
AS
BEGIN
DELETE c6 WHERE id = (SELECT id from DELETED)
END

--创建触发器,向表c1新增、更新、删除数据的时候,表c6也进行相应的的操作,根据id值来匹配 
CREATE TRIGGER t_c9
ON c1
after UPDATE,INSERT,DELETE
AS
BEGIN
IF EXISTS(SELECT 1 FROM INSERTED) AND NOT EXISTS(SELECT 1 FROM DELETED)
INSERT INTO c6 SELECT name from inserted
IF EXISTS(SELECT 1 FROM INSERTED) AND  EXISTS(SELECT 1 FROM DELETED)
UPDATE  c6 SET c6.name = c1.name from inserted c1 WHERE  c6.id = c1.id
IF NOT EXISTS(SELECT 1 FROM INSERTED) AND  EXISTS(SELECT 1 FROM DELETED)
DELETE c6 WHERE id = (SELECT id from DELETED)
END
GO