sql级联更新
① sql中如何设置级联更新
两种方法:
1.把两个表需要关联的字段,设置主外键关联,然后设置它们级联更新和删除就行了
2.呢,就是给一个表建立触发器,当插入或更新的时候,自动更新另一个表。
试试吧!
② 对Sql Server中的表添加级联更新和级联删除的几种方法
触发器方式: create trigger trg_A on A for update,delete as begin if exists(select 1 from inserted) update B set Name=(select Name from inserted) where Name=(select Name from deleted) else delete B where Name=(select Name from deleted) end go 要使用级联性更新和删除,用户可以在Alter TABLE 语句的CONSTRAINT子句中使用ON Update CASCADE 和/或 ON Delete CASCADE 关键字。注意他们都必须是应用于外键的。 级联更新和级联删除方式: Alter TABLE [dbo].[T_USERGROUP] ADD CONSTRAINT [FK_T_USERGROUP_T_ACCTTEMPLATE] FOREIGN KEY ( [ATNAME] ) REFERENCES [dbo].[T_ACCTTEMPLATE] ( [ATNAME] ) ON Update CASCADE ON Delete CASCADE
createprocaa
@IDint
as
begin
update表1setflag=1where表1ID=@ID
update表2setflag=1from表1a,表2bwherea.表1ID.=b.表1IDanda.表1ID=@ID
update表3setflag=1from表1a,表3cwherea表1ID.=c.表1IDanda.表1ID=@ID
update表4setflag=1from表1a,表3b,表4cwherea表1ID.=b.表1IDandc.表3ID=b.表3IDanda.表1ID=@ID
update表5setflag=1from表1a,表3b,表5cwherea表1ID.=b.表1IDandc.表3ID=b.表3IDanda.表1ID=@ID
update表6setflag=1from表1a,表3b,表6cwherea表1ID.=b.表1IDandc.表3ID=b.表3IDanda.表1ID=@ID
end
---执行---
--execaa1
④ SQL server中怎么修改级联删除修改
在创建表的时候就需要设置级联删除和级联更新(修改)。方法如下:
altertableSZ_Picture
addconstraintFK_SZ_PICTU_RELATIONS_SZ_PICTUforeignkey(pictureTypeId)
referencesSZ_PictureType(pictureTypeId)
--其中这句就是级联更新和级联删除
级联删除:
删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。
级联更新:
更新主键值的操作,该值由其它表的现有行中的外键列引用。在级联更新中,更新所有外键值以与新的主键值相匹配。
⑤ sql中如何设置级联删除/更新
在表编辑器里面。
貌似SQL2000只支持表间的级联删除。表内连接没办法级联删除。
⑥ sql 级联更新有什么好处
练级更新是说明你用外键了,用外键就省内存空间,练级更新等你开始使用数据时候,修改的时候,语句比较简单,只要改一个就行
⑦ sql级联更新和级联删除不起作用
sql级联更新和级联删除不起作用
级联删除你可以把它认为是一个触发器,也就是你删除主表中的数据,那么从表中的相关联的也就一起删除了。。。看个例子:======================create table a
(
id varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1) primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B创建了外码userId 对应A的主码ID,声明了级联删除
测试数据:
insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')
删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除
⑧ sql如何通过外键约束实现级联删除和更新
设定外键为级联删除就可以了。
alter table B add constraint fk_ID foreign key (ID) references A(ID) on delete cascade;
这样只需:delete from A where ID=nnnn; 就可以自动删除对应B表内容了。
通过外键无法实现同步更新。
⑨ sql server 级联更新 急急急!
有两种做法,第一种方法比较简单,直接通过设计器就能实现;是这样的:你打开员工表的设计器,右击关系将弹出你创建的主外键关系,在该关系中你将Insert和Upadate规则中的更新规则后面的下拉表中选择“层叠”,如果你想对删除规则也这样规定也可以选择“层叠”,然后你就可以在修改主表列时,外键表也跟着变化了。(不知道你用的是SQL 2000还是2005,具体步骤可能不太一样,不过思路是相同的)
第二种做法就是写sql语句:
alter table 销售单
Add constraint fk_ygid_xsygid --约束名
Foreign key(员工id) references 员工(id)
on update cascade --级联更新
on delete cascade --级联删除
恩,两种方法的效果是一样的。你自己选择!
⑩ sql中级联删除,级联更新是怎么理解的
级联删除你可以把它认为是一个触发器,也就是你删除主表中的数据,那么从表中的相关联的也就一起删除了。。。看个例子:======================create table a
(
id varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1) primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B创建了外码userId 对应A的主码ID,声明了级联删除
测试数据:
insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')
删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除
delete a where id='11'=============================================================级联更新也大同小异。。只是关键字为:on update希望回答对你有所帮助........