0

我正在尝试使用此存储过程更新 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

4

2 回答 2

0

存储在PaymentStatusId列中的值不能存在于PaymentStatus表中。

确保PostingStatusId,PaymentStatusId是有效的 id 并且存在于相应的表中。

SELECT PaymentStatusId, PostingStatusId 
FROM Posting
WHERE PostingId = @PostingId
于 2013-07-01T10:46:32.353 回答
0

我建议运行以下命令:

SELECT *
FROM   dbo.Posting
WHERE  PaymentStatusId
NOT IN (
    SELECT PaymentStatusId
    FROM dbo.PaymentStatus
)

您可能在此处标记的 Posting 表中有错误数据。它是如何进入那里的......我猜想在填充数据后创建或重新创建约束,并且禁用 WITH CHECK 选项。

于 2013-07-01T13:47:27.380 回答