为什么向tblDomare表中添加外键会导致此错误?

ALTER TABLE语句与外键约束“FK__tblDomare__PersN__5F7E2DAC”冲突。数据库“almu0004”,表“dbo”发生冲突。tblBana”,列“BanNR”。

Code

CREATE TABLE tblDomare
(PersNR VARCHAR (15) NOT NULL,
fNamn VARCHAR (15) NOT NULL,
eNamn VARCHAR (20) NOT NULL,
Erfarenhet VARCHAR (5),
PRIMARY KEY (PersNR));

INSERT INTO tblDomare (PersNR,fNamn,eNamn,Erfarenhet)
Values (6811034679,'Bengt','Carlberg',10);

INSERT INTO tblDomare (PersNR,fNamn,eNamn,Erfarenhet)
Values (7606091347,'Josefin','Backman',4);

INSERT INTO tblDomare (PersNR,fNamn,eNamn,Erfarenhet)
Values (8508284163,'Johanna','Backman',1);

CREATE TABLE tblBana
(BanNR VARCHAR (15) NOT NULL,
PRIMARY KEY (BanNR));

INSERT INTO tblBana (BanNR)
Values (1);

INSERT INTO tblBana (BanNR)
Values (2);

INSERT INTO tblBana (BanNR)
Values (3);

ALTER TABLE tblDomare
ADD FOREIGN KEY (PersNR)
REFERENCES tblBana(BanNR);

当前回答

在向表中添加外键之前,请执行以下操作

确保表必须为空或列数据应该匹配。 确保它不是空的。 如果表中包含不去设计和更改,请手动进行。 表1添加外键(Column Name)引用 表1 alter column列名属性不为空

其他回答

从表中删除所有现有数据,然后在表之间建立关系。

可以使用ALTER TABLE tablename WITH NOCHECK…创建外键。,这将允许违反外键的数据。

“ALTER TABLE tablename WITH NOCHECK…”选项来添加FK—这个解决方案对我有用。

这发生在我身上,因为我正在设计我的数据库,我注意到我在我的主表上改变了我的种子,现在关系表在主表上没有外键。

所以我需要截断这两个表,现在它工作了!

简单地说,您的表中已经存在数据,并且您试图与之创建关系的表确实为已经存在的值设置了主键。

或者删除现有表的所有值。 在新表中添加所有外键引用的值。

我在项目中遇到了一些问题。

在子表中,没有任何Id等于1和11的记录

我插入了DEAL_ITEM_THIRD_PARTY_PO表,它的Id等于1和11,然后我可以创建FK