Sql 更新违反主键
“我的更新”在更新到数据库时收到以下错误: ORA-00001:违反了唯一约束(DONALDBURY.bar\u ID\u PK) 我正在使用以下代码作为我的更新。我不想摆脱这个限制,而是想找到一个解决办法。我想停止设置重复值Sql 更新违反主键,sql,oracle,plsql,sql-merge,Sql,Oracle,Plsql,Sql Merge,“我的更新”在更新到数据库时收到以下错误: ORA-00001:违反了唯一约束(DONALDBURY.bar\u ID\u PK) 我正在使用以下代码作为我的更新。我不想摆脱这个限制,而是想找到一个解决办法。我想停止设置重复值 MERGE INTO bars DEST_TABLE USING (select :P3_filename as filename from dual) SOURCE_TABLE ON (DEST_TABLE.name = SOURCE_TABLE.filename) W
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\u ID
列上有一个名为bar\u ID\u PK
的唯一约束-此约束禁止多行在此列中具有相同的值。您正在尝试插入表中已存在的具有
image\u id
的新行。为避免此错误,只需在查询中为
:P3\u image\u id
占位符分配一个表中尚不存在的值。在image\u id
列上有一个名为bar\u id\u PK
的唯一约束-此约束禁止多行在此列中具有相同的值。您正在尝试插入表中已存在的具有
image\u id
的新行。为避免此错误,只需在查询中为
:P3\u image\u id
占位符分配一个表中尚不存在的值。根据提供的信息,DEST表上有一个基于image\u id的主键,因此不允许重复的image\u id。MERGE语句根据文件名(DEST_TABLE.filename)检查记录是否存在。您将需要检查图像标识(或者同时检查文件名和图像标识)。根据提供的信息,bars表中可能有多个具有相同文件名的图像ID 根据提供的信息,DEST表上有一个基于IMAGE\u ID的主键,因此不允许重复的IMAGE\u ID。MERGE语句根据文件名(DEST_TABLE.filename)检查记录是否存在。您将需要检查图像标识(或者同时检查文件名和图像标识)。根据提供的信息,bars表中可能有多个具有相同文件名的图像ID 作为一种工作方法。。。我相信图像ID是一个数字列。。从表中找出最大图像id。插入表格时添加MaxImageID+1。。。此值将始终是唯一的,并有望解决您的问题。。干杯 作为一种工作方法。。。我相信图像ID是一个数字列。。从表中找出最大图像id。插入表格时添加MaxImageID+1。。。此值将始终是唯一的,并有望解决您的问题。。干杯 您是否可以添加DEST_表的结构constraints@VR46请解释一下好吗?对不起,我的意思是bar
table structure请运行此查询:select table\u name,column\u name,position from user\u cons\u columns,其中constraint\u name='bar\u ID\u PK'
并将此查询的结果附加到问题。@kordirko请参阅上面的消息^constraints@VR46你能解释一下吗?对不起,我的意思是bar
table结构请运行此查询:select table\u name,column\u name,来自用户列的位置,其中约束名称='bar\u ID\u PK'
并将此查询的结果附加到问题中。@kordirko请参阅上面的消息^