sql-server – SQL Server双向级联?

我正在尝试在SQL Server Management Studio 2008中组建一个数据库,该数据库将管理数据而无需以编程方式处理数据,但我现在遇到了一些问题.

我有一个名为person的主表,该表包含有关某人的核心数据,并且这个表链接到第二个名为customer的表,如果他们希望拥有交易权限,则会将其包含在内.交易完成后,客户ID将被放入交易表中.

|Person|   |Customer|   |Transaction|
|------|   |--------|   |-----------|
|  ID  |-\ |   ID   |-\ |    ID     |
|      |  \| person |  \|  Customer |
|      |   |        |   |           |

在这两个链接中,ID是PK,而次要项目(人/客户)是FK.
我在这种安排中遇到的问题在于,如果他们进行了交易,则必须保留一个人,因此他们的客户ID出现在交易表中.

我不是百分之百确定采取什么方法,客户之间的“删除规则 – 没有行动”的人 – 客户之间的“删除规则 – 级联”会产生预期的效果吗?

在这个问题上,我们非常赞赏任何想法或更好的方法.

最佳答案 我想,是的,是的

ON DELETE CASCADE

Customer.Person外键中的子句,和

ON DELETE NO ACTION

Transaction.Customer外键中的子句将具有所需的效果.

然后任何删除Person的尝试都将删除相关的Customer行,除非有相关的Transcations.这将引发错误,DELETE将被回滚.

点赞