SSMS 内部版本:"The INSERT statement conflicted with the FOREIGN KEY constraint"



尽管我认为我的表正确地引用了主键,但我还是收到了这个错误。Constituent_Gift表引用了5个外键,但仅触发Gift表的此错误。我不明白为什么"类别"表会起作用,但"礼物"表不会。确切的错误消息是:

Msg 547,Level 16,State 0,Line 12
INSERT语句与FOREIGN KEY约束冲突"fk_giftid";。冲突发生在数据库"中;SusanCurtis";,表";dbo。Gift";,列"Gift_ID"。

代码:

CREATE TABLE Category
(
Category_ID          NCHAR(4) CONSTRAINT pk_categoryid PRIMARY KEY,
Category_Description NVARCHAR(50) CONSTRAINT nn_categorydescription NOT NULL
);
CREATE TABLE Gift
(
Gift_ID          NCHAR(1) CONSTRAINT pk_giftid PRIMARY KEY,
Gift_Description NVARCHAR(20) CONSTRAINT nn_giftdescription NOT NULL,
);
CREATE TABLE Constituent_Gift
(
Constituent_Gift_ID NCHAR(6) CONSTRAINT pk_constituentgift PRIMARY KEY,
Constituent_ID      NCHAR(6) CONSTRAINT fk_constituentid FOREIGN KEY 
REFERENCES Constituent(Constituent_ID),
Gift_ID             NCHAR(1) CONSTRAINT fk_giftid FOREIGN KEY
REFERENCES Gift(Gift_ID),
Fund_ID             NCHAR(4) CONSTRAINT fk_fundid FOREIGN KEY
REFERENCES Fund(Fund_ID),
Event_ID            NCHAR(2) CONSTRAINT fk_eventid FOREIGN KEY
REFERENCES [Event](Event_ID),
Category_ID         NCHAR(4) CONSTRAINT fk_categoryid FOREIGN KEY
REFERENCES Category(Category_ID),
Note                NVARCHAR(2000),
Gift_Amount         MONEY CONSTRAINT nn_giftamount NOT NULL,
Deductible_Amount   MONEY,
Gift_Date           Date,
Payment_Type        NVARCHAR(30),
Anonymous_Gift      BIT
);

有人知道为什么会发生这种事吗?

好吧,错误消息真的说明了一切:很明显,INSERT(不幸的是,您没有显示(试图插入一个违反外键约束fk_giftid的值,即Constituent_Gift.Gift_IDGift.Gift_ID之间的外键,这意味着您试图在Constituent_Gift中插入一行,其中Gift_ID的值在引用的Gift表中不存在。

这就是外键约束的整点-确保只有插入有效数据,该数据存在于引用表中(此处为Gift(。

将该值固定为Gift表中存在的值,您应该会没事的。

您要插入哪些数据?我还错过了表"组成"的架构

Constituent_ID                  NCHAR(6) CONSTRAINT fk_constituentid FOREIGN KEY 
REFERENCES Constituent(Constituent_ID),

相关内容

最新更新