插入语句与外键冲突 SQL

The insert statement conflicted with the Foreign Key SQL

我在网上搜索过,但找不到解决办法。我正在使用以下 SQL 语句来更新某些单元格或创建新行:

UPDATE [dbo].[PRCRDATALNS]

SET   FLD01 = :TIMX1 
     ,FLD02 = :TIML1

WHERE DIM1= :vmtrl AND PRCRULE= '2' AND LINENUM = '1'

IF @@ROWCOUNT=0

INSERT INTO [dbo].[PRCRDATALNS] (

       COMPANY 
      ,SODTYPE     
      ,SOTYPE
      ,PRCRULE
      ,DIM1
      ,DIM2
      ,DIM3
      ,PRCRDATALNS
      ,LINENUM
      ,FROMDATE
      ,FLD01
      ,FLD02
      ,SCALEQTY
      )

VALUES
        ('1'
        ,'13'
        ,'1'
        ,2
        ,:vmtrl
        ,'0'
        ,'0'
        ,'1'
        ,'1'
        ,GETDATE ( ) 
        ,:TIMX1
        ,:TIML1
        ,'1'
        );

当我执行它并插入一个新行时,它说:The insert statement conflicted with the FOREIGN KEY constraint "XD_PRCRDATALNS_PRCRULE". The conflict occurred in database "KOMBOS", table "dbo.PRCRDATA". The statement has been terminated.

我知道这意味着什么。首先,它没有像其他人那样在专栏中提及任何问题。其次,table PRCRDATA 具有所需的所有值,如 PRCRULE、SODTYPE、SOTYPE 等。

我应该看哪里?

抱歉,我还不能评论,所以我需要 post 一个 "answer"。我会建议:

  • 通过检查找出出现 FK 违规的列 dbo.PRCRDATA 的来源以及哪一列包含 XD_PRCRDATALNS_PRCRULE 约束。
    • 完成后,您现在应该能够看到 INSERT 语句中的违规值。

请告诉我们进展如何。

尼尔斯

我缩小了范围。来自 SQL 服务器的消息不正确! 这不是 PRCRULE 问题。问题是 FROMDATE 也是一个 FK,我将它从 GETDATE () 更改为 CONVERT(DATE, GETDATE()) 所以我删除了时间,它起作用了。