以防止删除两个表之间存在关系的记录
本文关键字:之间 存在 关系 记录 两个 删除 | 更新日期: 2023-09-27 18:27:05
这是我的问题我有两个表tbl_Person
和tbl_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);