更新违反了主键
Update violates primary key
我的更新在更新到数据库时收到以下错误:
ORA-00001: unique constraint (DONALDBURY.BARS_ID_PK) violated
我正在使用以下代码作为我的更新。我不想摆脱约束,而是想找到解决方法。我想停止设置重复值。
MERGE INTO bars DEST_TABLE
USING (select :P3_filename as filename from dual) SOURCE_TABLE
ON (DEST_TABLE.name = SOURCE_TABLE.filename)
WHEN MATCHED THEN
UPDATE SET image = ORDSYS.ORDImage()
WHEN NOT MATCHED THEN
INSERT (
image_id,
filename,
image,
name,
address,
postcode,
description)
VALUES (:P3_image_id,
:P3_filename,
ORDSYS.ORDImage(),
:P3_NAME,
:P3_ADDRESS,
:P3_POSTCODE,
:P3_DESCRIPTION);
在 image_id
列上有一个名为 BARS_ID_PK
的唯一约束 - 此约束禁止多行在此列中具有相同的值。
您正在尝试插入一个 image_id
的新行,该行已存在于 table.
为避免此错误,只需在查询中为 :P3_image_id
占位符分配一个值,该值在 table.
中尚不存在
根据所提供的信息,DEST table 上有一个基于 IMAGE_ID 的主键,因此不允许出现重复的 IMAGE_ID。 MERGE 语句根据文件名 (DEST_TABLE.filename) 检查记录是否存在。您需要检查 image_id(或同时检查文件名和 image_id)。根据提供的信息,您的 table 栏中可能有多个具有相同文件名的 image_id。
作为变通方法...我认为图像 ID 是一个数字列。从 table 中找出最大图像 ID。在插入 table 时添加 MaxImageID+1...此值将始终是唯一的,并有望解决您的问题。干杯..!!
我的更新在更新到数据库时收到以下错误:
ORA-00001: unique constraint (DONALDBURY.BARS_ID_PK) violated
我正在使用以下代码作为我的更新。我不想摆脱约束,而是想找到解决方法。我想停止设置重复值。
MERGE INTO bars DEST_TABLE
USING (select :P3_filename as filename from dual) SOURCE_TABLE
ON (DEST_TABLE.name = SOURCE_TABLE.filename)
WHEN MATCHED THEN
UPDATE SET image = ORDSYS.ORDImage()
WHEN NOT MATCHED THEN
INSERT (
image_id,
filename,
image,
name,
address,
postcode,
description)
VALUES (:P3_image_id,
:P3_filename,
ORDSYS.ORDImage(),
:P3_NAME,
:P3_ADDRESS,
:P3_POSTCODE,
:P3_DESCRIPTION);
在 image_id
列上有一个名为 BARS_ID_PK
的唯一约束 - 此约束禁止多行在此列中具有相同的值。
您正在尝试插入一个 image_id
的新行,该行已存在于 table.
为避免此错误,只需在查询中为 :P3_image_id
占位符分配一个值,该值在 table.
根据所提供的信息,DEST table 上有一个基于 IMAGE_ID 的主键,因此不允许出现重复的 IMAGE_ID。 MERGE 语句根据文件名 (DEST_TABLE.filename) 检查记录是否存在。您需要检查 image_id(或同时检查文件名和 image_id)。根据提供的信息,您的 table 栏中可能有多个具有相同文件名的 image_id。
作为变通方法...我认为图像 ID 是一个数字列。从 table 中找出最大图像 ID。在插入 table 时添加 MaxImageID+1...此值将始终是唯一的,并有望解决您的问题。干杯..!!