以防止删除两个表之间存在关系的记录

本文关键字:之间 存在 关系 记录 两个 删除 | 更新日期: 2023-09-27 18:27:05

这是我的问题我有两个表tbl_Persontbl_Job,它们有一个公共字段(jobID),并且关系jobId是tbl_Person中的外键。我想防止和管理:如果jobID在带有C#和SQL的tbl_Person中使用,则删除tbl_Job的记录。理论上我知道,但我不能实现它。实际上,我需要在sqlserver中使用布尔函数类型,在tbl_Person中搜索,然后返回true或false
感谢:)

以防止删除两个表之间存在关系的记录

您可以使用外键约束来防止数据库不一致,请参阅:https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

因此,表之间存在1(job)到n(person)的关系。只要默认情况下外键侧(人员)有记录,外键约束就阻止删除主键侧(作业)的记录。默认情况下,我的意思是没有ON DELETE CASCADE子句。

如果您想阻止删除作业(只要有人附属于该作业),请不要添加ON DELETE CASCADE子句。

ALTER TABLE dbo.tbl_Person 
ADD CONSTRAINT FK_person_job FOREIGN KEY (jobID) 
REFERENCES dbo.tbl_Job (jobID) 
ON DELETE CASCADE --  <-- remove this!

如果已经存在这样的子句,请删除约束并在没有该子句的情况下重新创建它。

ALTER TABLE dbo.tbl_Person DROP CONSTRAINT FK_person_job;
ALTER TABLE dbo.tbl_Person 
ADD CONSTRAINT FK_person_job FOREIGN KEY (jobID) 
REFERENCES dbo.tbl_Job (jobID);