Sql INSERT语句与外键约束冲突。数据库中发生冲突
我已经有这个问题好几个小时了。在SQL Server中,我运行了以下查询: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
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
表中。在将userId1
和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
是数字。这是否回答了您的问题?”?