使用不匹配的数据创建外键约束
问题描述:
我已经将数据从sql插入文件插入ms sql数据库。这个数据显然并不完整。 我在尝试创建ERD并在表之间创建关键约束时发现了这一点。 当我尝试将article_review连接到order1,其中order1具有主键且文章评论具有外键时。
我在那里选择不匹配,将键值的所有记录的查询: 看到图像:http://imgur.com/vDbCuG8
所以我想现在要做的: 插入新行与缺少的ID值article_review。其他列的值并不重要,它们可以是NULL或随机生成的。
一个简单的连接并不会真正地削减它,因为所有其他列都不相同。
ps。上述所有的必要的,因为MS SQL 2016不会让我创建2个表之间的键约束,其中一人包含的值是不是在其他之一,因此引发错误:
'order1' table saved successfully
'article_review' table saved successfully
'review' table
- Unable to create relationship 'FK_review_order1'.
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_review_order1". The conflict occurred in database "superDatabase", table "dbo.order1", column 'id'.
答
你只是想仅为文档添加外键?
您可以添加FK这样的:
ALTER TABLE dbo.order1 WITH NOCHECK
ADD CONSTRAINT FK_review_order1 FOREIGN KEY (id) REFERENCES dbo.article_review (id)
注意WITH NOCHECK
这种方式创建的外键,但不信任和残疾人,可以用此可以看出查询:
SELECT SCHEMA_NAME(fk.schema_id) AS sch, T.name,
fk.name, is_disabled, is_not_trusted, fk.is_not_for_replication
FROM sys.foreign_keys fk WITH (NOLOCK)
INNER JOIN sys.tables T WITH (NOLOCK) ON T.object_id = fk.parent_object_id
WHERE fk.is_not_trusted = 1
AND fk.is_disabled = 0
ORDER BY SCHEMA_NAME(fk.schema_id), T.name, fk.name;