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 ...