INSERT语句与FOREIGN KEY冲突

本文关键字:KEY 冲突 FOREIGN 语句 INSERT | 更新日期: 2024-09-12 16:30:45

我从SQL Server得到此错误:

INSERT语句与FOREIGN KEY约束"FK"冲突。冲突发生在数据库"DATABASENAME"、表"table"、列"UserID"中。语句已终止。

这来自Visual Studio 2008:

无法将"System.object"类型的对象强制转换为"System.IConvertable"类型。

这就是我得到的

CREATE TABLE DATABASENAME.TABLE 
(
    UserID INT IDENTITY,
    ...
    ...
    CONSTRAINT PK_Users PRIMARY KEY NONCLUSTERED (UserID),
) ON [PRIMARY]
GO
CREATE TABLE DATABASENAME.OTHERTABLE 
(
    ...
    ...
    ManagerUserID INT NOT NULL,
    ...
    CONSTRAINT FK FOREIGN KEY (ManagerUserID) REFERENCES TABLE (UserID)
) ON [PRIMARY]
GO

存储过程为:

CREATE PROCEDURE STOREDPROCEDURENAME
(@ManagerUserID int,   
 ...
 ...
)
AS 
    INSERT INTO OTHERTABLE(..., ManagerUserID, ...)
    VALUES (..., @ManagerUserID, ...)

这来自c#

_projectID = Convert.ToInt32(SqlHelper.ExecuteScalar( 
ConfigurationSettings.AppSettings[TimeWeb.Web.Global.CfgKeyConnString],
 "STOREDPROCEDURENAME", ..., ..., _managerID, ...));

在这种情况下,当我在网页上添加数据时,我指的是用户,从方法中我得到了正确的UserID。但后来发生了这种事。

因此,在表中,我当然添加了UserID,但当我使存储过程在中工作时,会出现第一条消息。

无法意识到我的代码出了什么问题。谢谢大家。

INSERT语句与FOREIGN KEY冲突

For Your Store过程。

尝试

CREATE PROCEDURE STOREDPROCEDURENAME
(@ManagerUserID int,   
 ...
 ...
)
AS 
Begin
 if exists(select * from DATABASENAME.TABLE where UserID=@ManagerUserID) --check if pk exists to the ref rable
   begin
   INSERT INTO OTHERTABLE(..., ManagerUserID, ...)
     VALUES (..., @ManagerUserID, ...)
   end
End