SQL数据库怎么进行多表级联更新,求个存储过程
答案:3 悬赏:10
解决时间 2021-02-13 07:36
- 提问者网友:独菊痴梦
- 2021-02-12 19:41
SQL数据库怎么进行多表级联更新,求个存储过程
最佳答案
- 二级知识专家网友:浪女动了心
- 2021-02-12 20:51
方法、过程如下:
在每个数据库的table1\table2都建立插入、删除、修改触发器
如在A1上
ceate trigger dbo.table1_u on A1.dbo.table1 for insert,update,delete as
IF @@rowcount = 0 RETURN
declare @no_i int -- 假设no为关键字
--declare 其他字段
declare @no_d int -- 假设no为关键字
--declare 其他字段
--赋值
select @no_i =no ,--其他值
from inserted
select @no_d =no ,--其他值
from deleted
--判断@no_d,@no_i 是否在A2,A3,A4,A5的表中存在
--1、如果@no_d,@no_i 都存在,则用新值更新A2,A3,A4,A5的talbe1
--2、如果@no_d不存在@no_i存在,则将新值插入A2,A3,A4,A5的talbe1
--3、如果@no_d存在@no_i不存在,则删除A2,A3,A4,A5的talbe1对应的值
if exists(select 1 from A2.dbo.talbe1 where no = @no_d) and
exists(select 1 from A2.dbo.talbe1 where no = @no_i)
begin
--修改A2数据库的表
end
在每个数据库的table1\table2都建立插入、删除、修改触发器
如在A1上
ceate trigger dbo.table1_u on A1.dbo.table1 for insert,update,delete as
IF @@rowcount = 0 RETURN
declare @no_i int -- 假设no为关键字
--declare 其他字段
declare @no_d int -- 假设no为关键字
--declare 其他字段
--赋值
select @no_i =no ,--其他值
from inserted
select @no_d =no ,--其他值
from deleted
--判断@no_d,@no_i 是否在A2,A3,A4,A5的表中存在
--1、如果@no_d,@no_i 都存在,则用新值更新A2,A3,A4,A5的talbe1
--2、如果@no_d不存在@no_i存在,则将新值插入A2,A3,A4,A5的talbe1
--3、如果@no_d存在@no_i不存在,则删除A2,A3,A4,A5的talbe1对应的值
if exists(select 1 from A2.dbo.talbe1 where no = @no_d) and
exists(select 1 from A2.dbo.talbe1 where no = @no_i)
begin
--修改A2数据库的表
end
全部回答
- 1楼网友:狠傷凤凰
- 2021-02-12 22:27
go
create trigger gx on 表1
for delete
as
update 表2 set flag=1 where id= (select id from deleted)
update 表3 set flag=1 where id= (select id from deleted)
update 表4 set flag=1 where id= (select id from deleted)
...
- 2楼网友:樣嘚尐年
- 2021-02-12 21:12
create proc aa
@ID int
as
begin
update 表1 set flag=1 where 表1ID=@ID
update 表2 set flag=1 from 表1 a,表2 b where a.表1ID.=b.表1ID and a.表1ID=@ID
update 表3 set flag=1 from 表1 a, 表3 c where a表1ID.=c.表1ID and a.表1ID=@ID
update 表4 set flag=1 from 表1 a,表3 b,表4 c where a表1ID.=b.表1ID and c.表3ID =b.表3ID and a.表1ID=@ID
update 表5 set flag=1 from 表1 a,表3 b,表5 c where a表1ID.=b.表1ID and c.表3ID =b.表3ID and a.表1ID=@ID
update 表6 set flag=1 from 表1 a,表3 b,表6 c where a表1ID.=b.表1ID and c.表3ID =b.表3ID and a.表1ID=@ID
end
---执行---
--exec aa 1
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |