Sql 如何从由外键链接的多个表中虚拟删除数据?

Sql 如何从由外键链接的多个表中虚拟删除数据?,sql,database,sql-server-2005,tsql,Sql,Database,Sql Server 2005,Tsql,我正在使用SQLServer2005 这是我的数据库关系图的一部分。我想在我的数据库上执行删除操作,该数据库将从tblDomain up tp tblSubTopics开始 假设每个表都有IsDeleted列,如果请求删除数据,则必须将该列标记为true。但这些数据应该保留在物理上 将包含ISDELETE列的表包括 tblDomain TBL主体 tblTopic tblSubTopic 现在我想,如果用户将一个域标记为已删除,那么所有引用字段也应标记为已删除。i、 e 1个领域涉及5个主题,这

我正在使用
SQLServer2005

这是我的数据库关系图的一部分。我想在我的数据库上执行删除操作,该数据库将从tblDomain up tp tblSubTopics开始

假设每个表都有IsDeleted列,如果请求删除数据,则必须将该列标记为true。但这些数据应该保留在物理上

将包含ISDELETE列的表包括

tblDomain TBL主体 tblTopic tblSubTopic

现在我想,如果用户将一个域标记为已删除,那么所有引用字段也应标记为已删除。i、 e

1个领域涉及5个主题,这5个主题涉及25个主题,这25个主题涉及500个子主题,依此类推


那么我应该如何将所有这些文件标记为已删除

简而言之,你可能不应该这样做。相反,如果域被标记为已删除,则应用程序应该能够确定所有附属信息因此被删除。否则,您将重复您自己,并对数据库设计进行非规范化


如果不可行,您可以在tblDomain上的触发器中处理级联删除。

为什么必须更新所有表中的“isDeleted”字段?我的建议是更新主表中的值。当你想检查一个主题。主题或子主题与“已删除”域相关,您可以使用相关视图访问数据:

SELECT Tbl_Subject.*, Tbl_Domain.isDeleted FROM Tbl_Subject INNER JOIN Tbl_Domain ON ...