我正在尝试使用此存储过程更新sql表:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[UpdatePostingStatusAngel]
@PostingStatusID tinyint,
@PostingID int
AS
UPDATE dbo.Posting
SET
PostingStatusID = @PostingStatusID
WHERE PostingID = @PostingID
当我执行该查询时,我收到此错误:The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_Posting_PaymentStatus". The conflict occurred in database "JobsDB2008", table "dbo.PaymentStatus", column 'PaymentStatusID'.
这真的很奇怪,因为我没有更新'PaymentStatusID'列,我不知道为什么它会让我在该列上发生冲突。该列也设置为NULL并且它已经有值。 我试图只更新PostingStatusID字段。 任何想法可能是什么原因? 在此先感谢Laziale
答案 0 :(得分:0)
PaymentStatusId
列中存储的值不得存在于PaymentStatus
表中。
确保PostingStatusId
,PaymentStatusId
是有效的ID,并存在于相应的表格中。
SELECT PaymentStatusId, PostingStatusId
FROM Posting
WHERE PostingId = @PostingId
答案 1 :(得分:0)
我建议运行以下命令:
SELECT *
FROM dbo.Posting
WHERE PaymentStatusId
NOT IN (
SELECT PaymentStatusId
FROM dbo.PaymentStatus
)
您在Posting表中可能包含错误的数据,这些数据在此处被标记。它是如何进入的......我猜想在填充数据后创建或重新创建了约束,并禁用了WITH CHECK选项。