Sql INSERT语句与外键约束“FK\uuuuuu Messages\uuuuu Email\uuuuuu 3D9E16F4”冲突
也许有人能告诉我为什么会这样。我编写了以下存储过程:Sql INSERT语句与外键约束“FK\uuuuuu Messages\uuuuu Email\uuuuuu 3D9E16F4”冲突,sql,sql-server,Sql,Sql Server,也许有人能告诉我为什么会这样。我编写了以下存储过程: CREATE PROCEDURE Newmessages @Message_id VARCHAR(20) ,@First_name VARCHAR(20) ,@Last_name VARCHAR(20) ,@Email VARCHAR(20) ,@Phone VARCHAR(20) ,@Postal_code VARCHAR(20) ,@Notification_1 BIT ,
CREATE PROCEDURE Newmessages
@Message_id VARCHAR(20)
,@First_name VARCHAR(20)
,@Last_name VARCHAR(20)
,@Email VARCHAR(20)
,@Phone VARCHAR(20)
,@Postal_code VARCHAR(20)
,@Notification_1 BIT
,@Notification_2 BIT
,@Own_Pets BIT
,@Organization_Id VARCHAR(20)
,@Animal_Id VARCHAR(20)
AS
INSERT INTO [dbo].[Messages]
VALUES (@Message_id, @First_name, @Last_name, @Email, @Phone,
@Postal_code, @Notification_1, @Notification_2, @Own_Pets,
@Organization_Id, @Animal_Id)
现在,我尝试通过插入以下内容来检查它:
exec Newmessages '64654', 'Kelli', 'Adkins', 'acprthvs.bpuzcnt@gmail.com', '478-6273327', 'SR5 2QF', 'False', 'False', 'False', '91839', '40550'
我得到:
Msg 547,级别16,状态0,过程Newmessages,第4行[批处理开始行0]>INSERT语句与外键约束FK\uuuuuu Messages\uuuuu Email\uuuuuu 3D9E16F4冲突。冲突发生在数据库Petfinder表dbo.Users列“Email”中
问题是,我检查了,我确实有一封电子邮件,我正试图插入到用户表中,这就是错误
在这里,我检查了它是否存在于dbo中。用户:
有人知道为什么仍会发生这种情况吗?使用INSERT上的显式列列表显式映射列:
INSERT INTO [dbo].[Messages] (Message_ID,First_Name, Last_name, Email, Phone, ...)
VALUES (
@Message_id
,@First_name
,@Last_name
,@Email
,@Phone
,@Postal_code
,@Notification_1
,@Notification_2
,@Own_Pets
,@Organization_Id
,@Animal_Id
)
在INSERT上使用显式列列表显式映射列:
INSERT INTO [dbo].[Messages] (Message_ID,First_Name, Last_name, Email, Phone, ...)
VALUES (
@Message_id
,@First_name
,@Last_name
,@Email
,@Phone
,@Postal_code
,@Notification_1
,@Notification_2
,@Own_Pets
,@Organization_Id
,@Animal_Id
)
您尝试插入的电子邮件地址是acprthvs。bpuzcnt@gma,它不存在于您的表中
CREATE PROCEDURE Newmessages
...
,@Email VARCHAR(20)
...
您要输入的电子邮件地址长度为26个字符。您尝试插入的电子邮件地址是acprthvs。bpuzcnt@gma,它不存在于您的表中
CREATE PROCEDURE Newmessages
...
,@Email VARCHAR(20)
...
您要输入的电子邮件地址长度为26个字符。使用电子邮件地址作为主键,因此需要在另一个表中复制它,这不是正确的设计选择。给电子邮件地址一个唯一的ID,然后将该ID用作主键和外键。使用电子邮件地址作为主键,因此需要在另一个表中复制它,这不是正确的设计选择。为电子邮件地址指定一个唯一的ID,然后将该ID用作主键和外键。