0

问候!

我已将 sql 插入文件中的数据插入到 ms sql 数据库中。显然,这些数据并不完整。当我尝试制作 ERD 并在表之间创建键约束时,我发现了这一点。当我尝试将 article_review 与 order1 连接时,其中 order1 有一个主键,而文章评论有一个外键。

我有一个查询,它选择所有具有不匹配键值的记录:参见图片:http: //imgur.com/vDbCuG8

所以我现在想要做的是:在 article_review 中插入缺少 ID 值的新行。其他列的值并不重要,它们可以是 NULL 或随机生成的。

一个简单的连接不会真正削减它,因为所有其他列都是不相同的。

附言。以上所有内容都是必需的,因为 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'.
4

1 回答 1

1

您只想为文档添加外键吗?

您可以像这样添加 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/的想法

于 2016-03-10T15:47:25.537 回答