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, name, 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, @name VARCHAR(100), @age VARCHAR(100);
--在inserted表中查询已经更新记录信息
SELECT @id = id, @name = name, @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, @name VARCHAR(100), @age VARCHAR(100);
--在deleted表中查询已经删除记录信息
SELECT @id = id, @name = name, @age = age FROM deleted;
print @id
delete from dbo.[usercopy] where id = @id


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







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值