这似乎是一个常见问题,但我在谷歌上搜索可以解决我的问题的正确答案,但未能找到。
我有多个表通过ProductID
相互连接,我希望在删除主表中的产品后删除其中的所有数据。即
产品:产品ID - 供应商 - 描述
产品评级:产品 ID - 评级 - 访客计数
产品评论:产品ID - 访客姓名 - 评论
我读到,在这种情况下使用了 SQL 触发器,但我对此一无所知,此外我可能会在某些情况下在 ASCX.CS 文件中提到我的数据源,在某些情况下我可能只是使用 SqlDatasoruce
在 ASCX 文件中。有没有可以使用的查询或存储过程?
最佳答案
最简单的方法是实现与 ProductID
的外键关系并设置删除级联
。这是一个总体想法:
create table ProductRatings
(
ProductID int not null
foreign key references Products(ProductID) on delete cascade,
Rating int not null,
VisitorsCount int not null
)
当您从Products
表中删除主键值时,SQL Server 会删除对该主键值具有外键约束的所有记录。如果您也对 ProductComments
表执行此操作,问题就解决了。无需对引用表中的任何记录显式调用DELETE
。
如果您不使用引用完整性......您应该使用。
编辑:这也适用于主键上的UPDATE
。您只需指定更新级联
,外键引用就会像主键一样更新,以确保 RI。
关于c# - 使用 Datalist C# 从 SQL Server 2008 中删除多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9606227/