INSERT语句与FOREIGN KEY约束冲突。冲突发生在数据库中

时间:2015-03-24 14:52:35

标签: sql sql-server foreign-keys

我这个问题已经持续了几个小时了。在SQL Server中,我运行了此查询:

INSERT INTO USERS_AVATAR(userId, avatId) VALUES ('1', '213');
INSERT INTO USERS_AVATAR(userId, avatId) VALUES ('2', '312');

但是消息显示出来了:

  

Msg 547,Level 16,State 0,Line 1
  INSERT语句与FOREIGN KEY约束冲突" FKUSERS_AVAT731248"。冲突发生在数据库" gk314",table" gk314.USERS",column' userId'。

     

Msg 547,Level 16,State 0,Line 2
  INSERT语句与FOREIGN KEY约束冲突" FKUSERS_AVAT731248"。冲突发生在数据库" gk314",table" gk314.USERS",column' userId'。

请帮忙!

2 个答案:

答案 0 :(得分:11)

在将userIds 12插入USERS_AVATAR之前,您必须先将它们插入表USERS。这就是FOREIGN KEY约束所要求的。

答案 1 :(得分:1)

外键约束是SQL的说法"该表期望数据存在于其他表中#34;。它允许您引用其他表,而数据不必存在两次或保持同步。

在这种情况下,有一个用户数据表(USERS)和一个用于头像数据的表(AVATARS),USERS_AVATAR表将两者链接在一起。您需要将用户添加到users表,然后将头像添加到头像表,然后您可以将两者链接在一起。它看起来像这样:

INSERT INTO USERS (userId, email, password, status) VALUES (1, 'gk314@hotmail.com',' gk314', 'strong')
INSERT INTO AVATARS (avatId, name, ...) VALUES (1, 'Avatar1', ...)
INSERT INTO USERS_AVATAR (userId, avatId) VALUES (1, 1)

原始答案:

这意味着有一个表格gk314.USERS没有userId与您尝试添加到userId的{​​{1}}相匹配{1}}。检查USERS_AVATAR表并添加USERS 1和2的用户,然后您就可以添加到userId表。