sql中级联删除,级联更新是怎么理解的?

sql中级联删除,级联更新是怎么理解的?,第1张

级联删除你可以把它认为是一个触发器,也就是你删除主表中的数据,那么从表中的相关联的也就一起删除了。。。看个例子:======================create table a\x0d\x0a(\x0d\x0aid varchar(20) primary key,\x0d\x0apassword varchar(20) not null\x0d\x0a)\x0d\x0a\x0d\x0acreate table b\x0d\x0a(\x0d\x0aid int identity(1,1) primary key,\x0d\x0aname varchar(50) not null,\x0d\x0auserId varchar(20),\x0d\x0aforeign key (userId) references a(id) on delete cascade\x0d\x0a)\x0d\x0a表B创建了外码userId 对应A的主码ID,声明了级联删除\x0d\x0a测试数据:\x0d\x0ainsert a values ('11','aaa')\x0d\x0ainsert a values('23','aaa')\x0d\x0ainsert b values('da','11')\x0d\x0ainsert b values('das','11')\x0d\x0ainsert b values('ww','23')\x0d\x0a删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除\x0d\x0adelete a where id='11'=============================================================级联更新也大同小异。。只是关键字为:on update希望回答对你有所帮助........

触发器方式: 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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存