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

SqlServer触发器 应用案例Demo数据同步场景

创建两张表 1 user   2 usercopy

两张表结构相同 ,如下图所示:


一:

--创建触发器userinsert1,当user表执行插入操作时,向usercopy表插入同样的数据
IF (
 object_id('userinsert1','tr') IS NOT NULL
) DROP TRIGGER userinsert1 ;go


CREATE TRIGGER userinsert1
ON
dbo.[user]
after
INSERT
AS
DECLARE @id INT,@name VARCHAR(100),@age VARCHAR(100);
--在inserted表中查询已经插入记录信息
SELECT @id = id,@name = name,@age = age FROM inserted;
INSERT usercopy (id,name,age) VALUES (@id,@name,'1212')


--测试插入数据在user表中,
INSERT dbo.[user] (id,age) VALUES ('2','test','22') ;


二:

--创建触发器userupdate1,当user表执行更新操作时,usercopy表同样更新数据

IF (
 object_id('userupdate1','tr') IS NOT NULL
) DROP TRIGGER userupdate1
go


CREATE TRIGGER userupdate1
ON
dbo.[user]
after
UPDATE
AS
DECLARE @id INT,@age VARCHAR(100);
--在inserted表中查询已经更新记录信息
SELECT @id = id,@age = age FROM inserted;
UPDATE usercopy set name = @name,age = @age where id = @id
 

--测试更新数据 在user表中
update dbo.[user] set name = 'name',age = '33' where id= '1';



三:

--创建触发器userdelete1,当user表执行删除操作时,usercopy表同样删除数据
IF (
 object_id('userdelete1','tr') IS NOT NULL
) DROP TRIGGER userdelete1
go


CREATE TRIGGER userdelete1
ON
dbo.[user]
after
DELETE
AS
DECLARE @id INT,@age VARCHAR(100);
--在deleted表中查询已经删除记录信息
SELECT @id = id,@age = age FROM deleted;
print @id
delete from dbo.[usercopy] where id = @id


-- 测试删除数据 在user表中
delete from dbo.[user] where id = '3'








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

相关推荐