SQL数据库怎么进行多表级联更新,求个存储过程

SQL数据库怎么进行多表级联更新,求个存储过程,第1张

方法、过程如下:

在每个数据库的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

两种方法,一种是sql语句,一种是用图形界面 *** 作。

sql语句写法:

alter table SZ_Picture

add constraint FK_SZ_PICTU_RELATIONS_SZ_PICTU foreign key (pictureTypeId)

references SZ_PictureType (pictureTypeId)

on update cascade on delete cascade

其中on update cascade on delete cascade代表级联更新和级联删除。

图形界面 *** 作方法:

首先在PDM中两个表的relationship上双击,d出如下对话框,选择Integrity 选项卡,将Update constraint 和Delete constraint下的cascade选上即可。

一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新。而表的更新 *** 作中,在很多情况下需要在表达式中引用要更新的表以外的数据。我们先来讨论根据其他表数据更新你要更新的表

一、MSSQLServer 多表关联更新

sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式 中引用要更新的表以外的其它数据。

一般形式:

update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE逻辑表达式

例如:

UPDATE dbo.Table2

SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB

FROM dbo.Table2

INNER JOIN dbo.Table1

ON (dbo.Table2.ColA = dbo.Table1.ColA)

实际更新的 *** 作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6660026.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存