案件匮乏的外键冲突

时间:2017-04-03 16:36:00

标签: sql sql-server tsql

这是我的问题:

我尝试在2个表之间添加一个外键,其中已存在数据:

ALTER TABLE  [dbo].[abonnement]     
ADD CONSTRAINT abonnement_fk2 FOREIGN KEY (id_langue)     
REFERENCES [dbo].[langue] (id_langue) ;

表[abonnement]列id_langue包含2个不同的值(EN,FR)
表[langue]列id_langue包含2个不同的值(en,fr)

SQL server(2012)返回以下错误:

The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "abonnement_fk2". The conflict occurred in database "********", table "dbo.langue", column 'id_langue'.

我不允许直接编辑“en,fr”和“EN,FR”数据

如何使我的外键不区分大小写?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

最好使用int类型列而不是string来创建外键。 在这种情况下,我建议您将其更改为int类型并更新其值。但是,如果您坚持使用string键,请将所有键更改为小写或大写。

答案 1 :(得分:0)

您正在尝试创建从[dbo].[abonnement][dbo].[langue]的外键,但[dbo].[abonnement](id_langue)中的值与[dbo].[langue]中的值不匹配。您无法创建违反参照完整性的关系。在表格中将所有内容全部更改为“EN,FR”,“EN,FR”不等于“en,fr”