2

データベースへの更新時に次のエラーが表示されます。

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);
4

3 に答える 3

0

BARS_ID_PKon columnという一意の制約がありimage_idます。この制約により、複数の行がこの列で同じ値を持つことが禁止されます。テーブルに既に存在する

新しい行を挿入しようとしています。 このエラーを回避するには、テーブルにまだ存在しない値をクエリのプレースホルダーに代入するだけです。image_id

:P3_image_id

于 2016-01-02T15:15:42.640 に答える
-1

回避策として...画像IDは数値列であると思います..テーブルから最大画像IDを見つけてください。テーブルに挿入するときに MaxImageID+1 を追加します...この値は常に一意であり、うまくいけば問題を解決します..乾杯..!!

于 2016-01-02T19:36:12.900 に答える