【发布时间】:2020-12-17 09:30:16
【问题描述】:
我设置了一个需要测试的触发器。为此,我需要在 tblSOLine 表中执行插入操作,但是当我这样做时,我收到一个错误,我认为这与 PK/FK 的设置方式有关。有什么办法可以在不弄乱表关系的情况下插入到这个表中?
这是我尝试过的:
INSERT INTO tblSOLine (SOHeaderID, ProductID, Quantity, NetSale, VAT)
VALUES (5364, 6, 6, NULL, NULL)
这是错误:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_tblSOLine_tblSOHeader".
The conflict occured in database "VintageSounds", table "dbo.tblSOHeader", column 'SOHeaderID'.
【问题讨论】:
-
tblSOHeader 表中必须存在 SOHeaderID 为 5364 的行。tblProduct 表中必须存在 ProductID 为 6 的行。如果这些行都不存在,则必须插入它们在您可以插入您的 tblSOLine 行之前。
-
因此,如果我尝试插入存在的值,则会引发重复错误。我的要求是不可能的吗?
-
@joehelsing :正如吉尔伯特所说,如果这是一个约束,这些记录首先需要存在于外部表中。如果 5364 不在 SOHeader 中作为 SOHeaderID 已经将其插入那里。如果 6 尚未作为 ProductID 包含在 tblProduct 中,则将其插入那里。一旦这两个记录都存在于外部表中,您的原始插入应该可以工作。
标签: sql ssms database-administration