使用不匹配的数据创建外键约束

问题描述:

问候!使用不匹配的数据创建外键约束

我已经将数据从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; 

想法来自https://www.brentozar.com/blitz/foreign-key-trusted/