插入语句与外键冲突 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())
所以我删除了时间,它起作用了。
我在网上搜索过,但找不到解决办法。我正在使用以下 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())
所以我删除了时间,它起作用了。