【发布时间】:2012-10-31 12:35:57
【问题描述】:
假设我有两张桌子。 Errors 和 ErrorsDetails。所以我有一个错误记录,其中可能包含许多 ErrorDetails 记录。
用户将通过他们使用的应用程序定期删除详细记录。当所有明细记录都被清理(删除)后,我也想自动删除主记录。
如果 master 不再拥有更多详细信息,那么一个 SQL 删除语句将删除详细信息和 master 会很酷。但我似乎无法得到一个干净的 SQL 语句来做到这一点。每次删除后,我宁愿不要轮询主人以获取详细信息。
错误
ID Error
1 Import Error
2 Export Error
错误详情
ID ErrorsID DetailedInfo
1 1 Couldn't import file because of FTP error
2 1 Couldn't import file because of permission error
3 2 Couldn't export file because of directory doesn't exist
我已经尝试像这样添加cascade 删除约束,但它似乎不起作用。
alter table dbo.ErrorsDetails
add constraint FK_Delete_Master
foreign key (ErrorsID) references dbo.Errors(ErrorsID) on delete cascade
感谢您的任何建议。
更新
有人提到使用触发器。我想过,但没有提及。触发器肯定会完成这项工作。这种情况下触发器的优缺点?
【问题讨论】:
标签: sql-server-2008 master-detail cascading-deletes