请教一个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