跨库触发器应用

--在数据库test中创建表aa
use test
go
create table aa(id int primary key not null,name1 varchar(20),name2 varchar(20),name3 varchar(20))
--在数据库test1中创建表bb
use test1
go
create table bb(id int primary key not null,name1 varchar(20),name2 varchar(20),name3 varchar(20))
--在数据库test2中创建表cc
use test2
go
create table cc(id int primary key not null,name1 varchar(20),name2 varchar(20),name3 varchar(20))
go
use test
go
--创建跨库触发器,实现aa表中每个id对应的name2,name3改变时,就相应改变数据库test1中的bb表和数据库test2中的cc表
CREATE TRIGGER test_aa on aa
for update,insert,delete
as
if not exists (select * from deleted) --插入
begin
insert test1..bb(id,name2) select id,name2 from inserted
insert test2..cc(id,name3) select id,name3 from inserted
end
else if not exists (select * from inserted)--删除
begin
delete test1..bb where id in (select id from deleted)
delete test2..cc where id in (select id from deleted)
end
else--更新
begin
update test1..bb set name2=inserted.name2 from inserted where test1..bb.id=inserted.id
update test2..cc set name3=inserted.name3 from inserted where test2..cc.id=inserted.id
end
go
--测试
select * from test..aa
select * from test1..bb
select * from test2..cc
go
use test
go
--插入数据
insert aa values(1,'aa','bb','cc')
insert aa values(2,'aa1','bb1','cc1')
insert aa values(3,'aa2','bb2','cc2')
--测试
select * from test..aa
select * from test1..bb
select * from test2..cc
go
use test
go
--删除数据
delete aa where id=2
go
--测试
select * from test..aa
select * from test1..bb
select * from test2..cc
go
use test
go
--更新数据
update aa set name2='bb22' where id=3
go
--测试
select * from test..aa
select * from test1..bb
select * from test2..cc
go 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值