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用作主键和外键。