我想删除GlassesColor表中与Glasses表中的GlassesID相关联的行。 我想在存储过程中实现它。存储过程只从客户端获取一个参数,一个CollectionID。
以下是表格:
以下是表格内容的示例:
知道如何实现这个? 提前谢谢!
答案 0 :(得分:3)
最简单的方法是使用DELETE的CASCADE选项定义FOREIGN KEYS。
http://msdn.microsoft.com/en-us/library/aa933119%28v=sql.80%29.aspx
我看到你已经定义了外键,所以你只需要确保它们有DELETE的CASCADE选项。
答案 1 :(得分:3)
手动删除会是这样的:
delete
from GlassesColor
where GlassesID in (select GlassesID from Glasses where CollectionID = 3)
但是,除非这是一次性清理,否则您应该开始指定外键级联规则,就像已经建议的其他答案一样。
答案 2 :(得分:2)
没有存储过程,请使用Constrains - > http://www.mssqlcity.com/Articles/General/using_constraints.htm OnDelete Cascade,所以当你删除眼镜中的行时,它也会以眼镜颜色删除。
答案 3 :(得分:2)
在GlassesColor
联接表的外键约束中,有on delete cascade
。这意味着当删除主键引用记录时,相应的外键引用行也将被删除。
因此,您的GlassesColor
表定义如下所示:
create table GlassesColor
(
GlassesId int foreign key references Glasses(GlassesID) on delete cascade,
.....
)
go
答案 4 :(得分:2)
我在MSSQL中使用了INFORMATION_SCHEMA来回答类似问题
答案 5 :(得分:2)
以下是在Microsoft SQL Server中执行此操作的最简单方法:创建外键约束时,将ON UPDATE CASCADE ON DELETE CASCADE
添加到其定义中。我假设您希望更改GlassesID也能传播。 ;-)如果没有,那么你不需要“ON UPDATE CASCADE”。
示例:
ALTER TABLE
[GlassesColor]
WITH CHECK ADD CONSTRAINT
[FK_GlassesColor_GlassesID]
FOREIGN KEY
([glassesID]) REFERENCES [Glasses] ([glassesID])
ON UPDATE CASCADE ON DELETE CASCADE