INSERT语句与FOREIGN KEY冲突

时间:2015-02-27 18:20:30

标签: c# sql-server stored-procedures insert foreign-keys

我从SQL Server收到此错误:

  

INSERT语句与FOREIGN KEY约束“FK”冲突。冲突发生在数据库“DATABASENAME”,表“TABLE”,列“UserID”中。   声明已经终止。

这来自Visual Studio 2008:

  

无法将“System.Object”类型的对象强制转换为“System.IConvertible”。

这就是我得到的

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方法开始。但后来发生了这件事。

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

无法意识到我的代码有什么问题。谢谢你们。

1 个答案:

答案 0 :(得分:0)

对于您的商店程序。

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