Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更新违反主键_Sql_Oracle_Plsql_Sql Merge - Fatal编程技术网

Sql 更新违反主键

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

“我的更新”在更新到数据库时收到以下错误:

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)
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请参阅上面的消息^