如何删除关联SQL表中的行?
我想删除GlassesColor表中与GlassesID关联的行。 我想在存储过程中实现这一点。存储过程只从客户端获取一个参数,即CollectionID 下表如下: 以下是内容表的示例: 你知道我该怎么做吗?如何删除关联SQL表中的行?,sql,sql-server,tsql,database-design,stored-procedures,Sql,Sql Server,Tsql,Database Design,Stored Procedures,我想删除GlassesColor表中与GlassesID关联的行。 我想在存储过程中实现这一点。存储过程只从客户端获取一个参数,即CollectionID 下表如下: 以下是内容表的示例: 你知道我该怎么做吗? 提前谢谢你 最简单的方法是使用用于删除的级联选项定义外键 我看到您已经定义了外键,所以您只需要确保它们具有用于删除的级联选项。在没有存储过程的情况下,使用Constrains->OnDelete CASCADE,这样当您删除眼镜中的行时,它也将以眼镜颜色删除。在您的GlasseCo
提前谢谢你 最简单的方法是使用用于删除的级联选项定义外键
我看到您已经定义了外键,所以您只需要确保它们具有用于删除的级联选项。在没有存储过程的情况下,使用Constrains->OnDelete CASCADE,这样当您删除眼镜中的行时,它也将以眼镜颜色删除。在您的
GlasseColor
联接表的外键约束中,在删除级联时使用。这意味着删除主键引用记录时,相应的外键引用行也将被删除
因此,您的GlassesColor
表定义如下所示:
create table GlassesColor
(
GlassesId int foreign key references Glasses(GlassesID) on delete cascade,
.....
)
go
delete
from GlassesColor
where GlassesID in (select GlassesID from Glasses where CollectionID = 3)
手动删除类似以下内容:
create table GlassesColor
(
GlassesId int foreign key references Glasses(GlassesID) on delete cascade,
.....
)
go
delete
from GlassesColor
where GlassesID in (select GlassesID from Glasses where CollectionID = 3)
但是,除非这是一次性清理,否则您应该开始指定外键级联规则,就像已经建议的其他答案一样。我在MSSQL中使用信息模式时回答了类似的问题
在Microsoft SQL Server中执行此操作的最简单方法是:在创建外键约束时,在其定义中添加ON UPDATE CASCADE ON DELETE CASCADE
。我假设您希望对GlassesID的更改也能传播。;-)如果不是,那么您就不需要“更新级联”
例如:
ALTER TABLE
[GlassesColor]
WITH CHECK ADD CONSTRAINT
[FK_GlassesColor_GlassesID]
FOREIGN KEY
([glassesID]) REFERENCES [Glasses] ([glassesID])
ON UPDATE CASCADE ON DELETE CASCADE
+1给大家!!!我们都同意它应该在外键约束的DELETE CASCADE上!:-):-):-):-)