DELETE SQL的设计决策

Som*_*per 5 c# sql

有一张叫做人的桌子.有人格和接触.

如果一个人被删除,那么我希望从数据库以及该人的相关联系人中删除该人.

在ONE Store程序中执行DELETES或者我的业务层首先调用pContactDelete然后调用pPersonDelete是更好的做法???????

谢谢Niall

Car*_*lis 12

假设您正在使用MS SQL Server:

您应该使用ON DELETE CASCADE外键.

ALTER TABLE Contact
ADD CONSTRAINT FK_PersonContact FOREIGN KEY (PersonId)
REFERENCES Person(PersonId) ON DELETE CASCADE
Run Code Online (Sandbox Code Playgroud)

这将确保删除人员行时删除联系人行.它是一个总是由数据库强制执行的约束.

您也可以在SQL Management Studio的外键关系对话框,INSERT和UPDATE规则部分,删除规则 - >设置为Cascade中进行设置.

只需确保Contact在业务层中缓存对象的某个位置,您也可以刷新缓存.