请教一个SQLSERVER 中级联删除的例子
已经修改了表
use LkMusicDB alter table RecordLabel add constraint fk_RecordlabelidAndAddressid foreign key (addressid) references Address(addressid) on update no action on delete cascade; 打算在delete from [LkMusicDB].[dbo].[RecordLabel] where recordlabelid =20005 时会级联删除
Address 表中的对应的行,
增加级联是成功了
为什么删除的时候 还是只会删除RecordLabel 不会删除Address 中的那?
------解决方案-------------------- 引用: 已经修改了表use LkMusicDB alter table RecordLabel add constraint fk_RecordlabelidAndAddressid foreign key (addressid) references Address(addressid) on update no action on delete cascade; 打算在delete from [LkMusicDB].[dbo].[RecordLabel] where recordlabelid =20005 时会级联删除 Address 表中的对应的行, 增加级联是成功了 为什么删除的时候 还是只会删除RecordLabel 不会删除Address 中的那? 你弄反了把,这个级联删除,只能是删除主表的记录时,级联删除子表的记录。
你现在的主表是Address,而子表是RecordLabel。
所以只能实现删除address的记录时,自动删除RecordLabel的记录。
------解决方案-------------------- 引用: Quote: 引用: Quote: 引用: foreign key (addressid) references Address(addressid) foreign key (addressid) 是因为我在RecordLabel这张表里有addressid列 并且是外键 references Address(addressid) 是Address表中addressid是主键! 请问这样有错吗? 能帮我改改吗? 你写的是对的。 打算在delete from [LkMusicDB].[dbo].[RecordLabel] where recordlabelid =20005 时会级联删除 这个实现不了。 只能实现 delete from [LkMusicDB].[dbo].[address] where addressid=xxx 时,自动把子表的addressid = xxx的记录删除掉哈 请问 要实现我的那种怎么办 。。 触发器我会搞那就给表RecordLabel建个delete触发器:
类似于这样:
delete from address
from inserted i
where i.addressid = address.addressid