Sql INSERT语句与外键约束冲突。数据库中发生冲突

Sql INSERT语句与外键约束冲突。数据库中发生冲突,sql,sql-server,foreign-keys,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'); 但这条信息显示: 味精547,第16级,状态0,第1行 INSERT语句与外键约束“FKUSERS_AVAT731248”冲突。冲突发生在数据库“gk314”、表“gk314

我已经有这个问题好几个小时了。在SQL Server中,我运行了以下查询:

INSERT INTO USERS_AVATAR(userId, avatId) VALUES ('1', '213');
INSERT INTO USERS_AVATAR(userId, avatId) VALUES ('2', '312');
但这条信息显示:

味精547,第16级,状态0,第1行
INSERT语句与外键约束“FKUSERS_AVAT731248”冲突。冲突发生在数据库“gk314”、表“gk314.USERS”、列“userId”中

味精547,第16级,状态0,第2行
INSERT语句与外键约束“FKUSERS_AVAT731248”冲突。冲突发生在数据库“gk314”、表“gk314.USERS”、列“userId”中


救命啊

外键约束是SQL表示“此表希望数据存在于其他表中”的方式。它允许您引用其他表,而无需数据存在两次或保持同步

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

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
,它没有与您试图添加到
USERS\u AVATAR
userId
匹配的
userId
。检查
USERS
表并添加具有
userId
1和2的用户,然后您应该能够添加到
USERS\u AVATAR
表中。

在将userId
1
2
插入
USERS\u AVATAR
之前,必须首先将它们插入表
USERS
。这就是外键约束所要求的。

这是我创建gk314.users表的查询:“插入用户(userId、email、password、status)值('gk314','gk314@hotmail.com“我试过了,但它说“将varchar值'gk314'转换为数据类型int时,Msg 245,级别16,状态1,第1行转换失败。”然后您不能将
gk314
用作
userId
。请将
插入用户
更改为
…值(1,”gk314@hotmail.com,…)
我照你说的做了,但上面写着“Msg 547,16级,0级,第1行INSERT语句与外键约束“FKUSERS_AVAT239440”冲突。冲突发生在数据库“gk314”、表“gk314.AVATARS”、列“avatId”中。声明已被终止。“听起来好像是同一个问题,只针对
化身
表。在尝试写入
用户\u化身
表之前,请确保已使用适当的ID将化身添加到该表中。这是我创建gk314的查询。用户表:“插入用户(用户ID、电子邮件、密码、状态)值('gk314','gk314@hotmail.com","gk314","strong",;“无关但:不要对数字使用字符串文字。
'1'
是字符串。
1
是数字。这是否回答了您的问题?”?