【发布时间】:2012-05-16 03:50:26
【问题描述】:
当我尝试在一个存储过程中更新两个表时遇到问题我得到了 SqlException 有人可以帮我吗
INSERT 语句与 FOREIGN KEY 约束“FK”冲突。 数据库“”,表“dbo.Users”,列中发生冲突 '用户身份'。声明已终止。
ALTER PROCEDURE [dbo].[CreateProject]
@ProjectID UNIQUEIDENTIFIER,
@UserID UNIQUEIDENTIFIER,
@ProjectName NVARCHAR(50),
@Description NTEXT,
@EstStartDate DATETIME,
@EstEndDate DATETIME,
@StatusID SMALLINT,
@Priority SMALLINT
AS
INSERT INTO DBO.Projects VALUES
(@ProjectID,@ProjectName,GETDATE(),@Description,@EstStartDate,@EstEndDate,@StatusID,@Priority)
INSERT INTO Users_projects VALUES
(@ProjectID,@UserID)
【问题讨论】:
-
消息很清楚,您正在尝试在表
Users_projects上插入一个UserId,而该表上不存在dbo.Users -
您是否插入了用户?否则,请确保将右列作为用户表的 FK 引用。
-
如果您在一个 proc 中进行多次插入,如果您有任何一个语句失败,则需要使用显式事务并回滚所有操作。否则,您会使数据库处于不一致的状态。也可以为此使用 TRY catch 块,并在 catch 块中返回错误消息,这将有助于稍后进行故障排除。
标签: sql