更新到数据库时,我的更新收到以下错误:
ORA-00001:违反了唯一约束(DONALDBURY.BARS_ID_PK)
我使用以下代码作为我的更新。我不想摆脱约束,但找出一个解决方法。我想停止设置的重复值。
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);
答案 0 :(得分:0)
BARS_ID_PK
列上有一个名为image_id
的唯一约束 - 此约束禁止多行在此列中具有相同的值。
您正尝试插入表格中已存在image_id
的新行。
要避免此错误,只需在查询中为:P3_image_id
占位符分配一个值,该值尚未存在于表中。
答案 1 :(得分:0)
根据提供的信息,DEST表上有一个基于IMAGE_ID的主键,因此不允许重复的IMAGE_ID。 MERGE语句根据文件名(DEST_TABLE.filename)检查记录是否存在。您需要检查image_id(或文件名和image_id)。根据提供的信息,似乎在条形图表中可能有多个具有相同文件名的image_ids。
答案 2 :(得分:-1)
作为一种解决方法...我相信图像ID是一个数字列..从表中找出最大图像ID。插入表格时添加MaxImageID + 1 ...此值将始终是唯一的,并希望解决您的问题..干杯.. !!