为什么向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);

当前回答

这是因为您试图从tblDomare创建一个外键。PersNR to tblBana。BanNR但是/和tblDomare中的值。PersNR与tblbanana . bannr中的值不匹配。不能创建违反引用完整性的关系。

其他回答

请尝试以下查询:

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

);

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


INSERT INTO tblBana (BanNR)
Values (3);


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

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

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

您应该看到表的行上是否有任何数据。如果“是”,那么您应该截断表(s),否则您可以使它们在tblDomare中具有相同数量的数据。PersNR to tblBana。BanNR和反之亦然。

当你将表列从可空变为不可空时,你必须:

首先,用value(因为它是外来的)初始化这个列 键不可为空)。 之后,就可以正常地修改表列了。

请先从该表中删除数据,然后再次运行迁移。你会成功的