【问题标题】:Msg 100, Level 16, State 0, Line 109 insert statement error消息 100,级别 16,状态 0,第 109 行插入语句错误
【发布时间】:2020-09-01 18:51:16
【问题描述】:
CREATE TABLE Purchase_Supplier
(
    SUPPLIER_ID int NOT NULL,
    NAME varchar(255) NOT NULL,
    TYPE_OF_SUPPLIER varchar(255),
    STOCK_NAME varchar(255) NOT NULL,
    TYPE_OF_SUPPLY varchar(255) NOT NULL,
    CONSTRAINT PU_SU PRIMARY KEY (SUPPLIER_ID)
 )
INSERT INTO Purchase_Supplier
VALUES(41256,'FLYNN SAVIOUR','IN_HOUSE','Desktop','WHOLESALE');
INSERT INTO Purchase_Supplier
VALUES(41257,'JONES LYNN','IN_HOUSE','Mouse','WHOLESALE');

  CREATE TABLE Purchase_Supply_Details
    (   INSPECTION VARCHAR(25) NOT NULL,
        ITEM_CONDITION VARCHAR(25) NOT NULL,
        RETURN_STOCK VARCHAR(25) NOT NULL,
        STOCK_ID INT NOT NULL,
        CONSTRAINT PSD PRIMARY KEY (SUPPLIER_ID, STOCK_ID),
        SUPPLIER_ID int FOREIGN KEY REFERENCES Purchase_Supplier(SUPPLIER_ID)
    );

INSERT INTO Purchase_Supply_Details
VALUES('SAMPLE','PERFECT','NO',4123023,41259);
INSERT INTO Purchase_Supply_Details
VALUES('PIECE','PERFECT','NO',4123024,41260);

在此表中插入值时发生错误。在添加约束后,它也不适用于该条件。怎么办??

【问题讨论】:

  • 您在 Purchase_Supplier 表中没有 SUPPLIER_ID = 41263。这就是外键的工作原理。您不能将未知的 SUPPLIER_ID 插入到 Purchase_Supply_Details 表中。

标签: sql sql-server sql-insert


【解决方案1】:

当您定义了关系后,数据应先存在于父表中,然后再将数据插入子表中,否则子表中的数据被称为孤儿,系统将不允许您存储孤儿数据。

从 41261 开始的子数据中的值不存在于父表中,即Purchase_Supplier

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多