【问题标题】:How can I INSERT into this table?我怎样才能插入到这个表中?
【发布时间】: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


【解决方案1】:

错误是说SOHeaderID = 5364SOHeader 中不存在。您需要确保该值是您想要的。

如果您尝试插入带有此编号的 headerid,并且外键不起作用,您应该不会收到错误消息。但是,此类 id 通常是 IDENTITY 列,因此它们是自动生成的。如果您在号码中没有拼写错误,那么您可能将号码与其他内容(例如客户编号)混淆了。

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2021-09-24
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多