这是我的问题:
我尝试在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”数据
如何使我的外键不区分大小写?
感谢您的帮助。
答案 0 :(得分:1)
最好使用int
类型列而不是string
来创建外键。
在这种情况下,我建议您将其更改为int
类型并更新其值。但是,如果您坚持使用string
键,请将所有键更改为小写或大写。
答案 1 :(得分:0)
您正在尝试创建从[dbo].[abonnement]
到[dbo].[langue]
的外键,但[dbo].[abonnement](id_langue)
中的值与[dbo].[langue]
中的值不匹配。您无法创建违反参照完整性的关系。在表格中将所有内容全部更改为“EN,FR”,“EN,FR”不等于“en,fr”