
oracle下:
oracle只有级联删除,没有级联更新(其实是有的,只是没有on update cascade),所以要实现级联更新有两种方法:
一、在约束中定义延迟更新:alter table child_table
add constraint fk_child_parent
foreign key (id)
references parent_table (id)
initially deferred deferrable;
-- initially deferred deferrable; 这是延迟oracle的一致性检查,通过这个我们可以分别更新主表和子表,然后再提交,这样就能验证通过了,有点麻烦,呵呵,还是用触发器吧
二、通过触发器实现:
CREATE OR REPLACE TRIGGER ID_TRG AFTER UPDATE ON Section FOR EACH ROW
BEGIN
UPDATE Employee SET 部门=:NEW部门WHERE 部门=:OLD部门;
END;
复杂的情况
update a
set acolumn1 =
( select bcolumn1
from b,a
where acolumn2 = bcolumn2)
)
where acolumn2 =
(
select bcolumn2
from b,a
where acolumn2 = bcolumn2)
)
if (object_id('tgr_update', 'TR') is not null)
drop trigger tgr_update
go
create trigger tgr_clasupdate' B
for update
as
declare @A1 int, @newB1 int;
--更新前的数据
select @oldnewB1=b1,@A1=a1 From inserted
if (@olnewB1==1)
begin
--更新后的数据
update A set A2= 1 where A1 = @A1
end
go
以上就是关于sql 几张表互相关联 更改一张数据库信息 相应的更新相关联的数据全部的内容,包括:sql 几张表互相关联 更改一张数据库信息 相应的更新相关联的数据、SQL中怎么将数据库里某个表的一些缺少的信息通过另外一个数据相同的表的某些字段来关联更新进去、数据库表更新,A,B两张表,通过A1字段关联,当B表B1字段都变为1时,A表A2字段对应变为1等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)