在Sql Server中,我有一个包含4个FK关系的Company表:
我需要删除特定列为空的某些公司。但我需要删除其他表中的所有相关记录。 在创建和设计这些表后,我该怎么做?'
我为Load关系尝试了这个,但是我收到了一个错误:
ALTER TABLE "Company"
ADD CONSTRAINT "FK_Company"
FOREIGN KEY ("Company")
REFERENCES "Load" ("Company")
ON DELETE CASCADE;
ERROR:
Msg 1769, Level 16, State 1, Line 1
Foreign key 'FK_Company' references invalid column 'Company' in referencing table 'Company'.
Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.
任何帮助都将不胜感激。
答案 0 :(得分:0)
如果这些约束不是ON DELETE CASCADE
,那么很有可能这样做是有原因的。因此,除非你知道自己在做什么,否则我建议不要改变这一点。
而且,编写模拟级联的删除查询并不是很难:
DELETE FROM child_table WHERE parent_id IN
(SELECT parent_id FROM parent_table WHERE attr = ?)
DELETE FROM parent_table WHERE attr = ?;
答案 1 :(得分:0)
您的Load表和其他表需要将公司表的键定义为外键。在此示例中,Load表的CompanyID列引用了Company表的CompanyID列。 CompanyID是Company表的主键。
ALTER TABLE dbo.Load ADD CONSTRAINT
FK_Load_Company FOREIGN KEY
(
CompanyID
) REFERENCES dbo.Company
(
CompanyID
) ON UPDATE NO ACTION
ON DELETE CASCADE