我从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
,但是当我使存储过程工作时,会出现第一条消息。
无法意识到我的代码有什么问题。谢谢你们。
答案 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