0

一意の制約を持つテーブルがあり、例外を回避するために、一意の制約に違反することなく更新を実行したいと考えています。

これは、where節で正しい条件を使用するだけで実現できます。ただし、 を使用するPreparedStatementと、値を 2 回設定する必要がなくなります。1 つは設定用で、もう 1 つは確認用です。

私は何ができますか:

UPDATE mytable SET
   col1 = ?,
   col2 = ?, --has unique constraint
   col3 = ?
WHERE
   id = ?
AND NOT EXISTS (
   SELECT *
   FROM mytable
   WHERE
      col2 = ? AND
      id <> ?
);

の値をcol22 回入力する必要があることに注意してくださいid

私がやりたいことは、次のようなものです:

UPDATE mytable SET
   col1 = entry.col1,
   col2 = entry.col2,
   col3 = entry.col3
FROM
   (SELECT * FROM
      ? AS id,
      ? AS col1,
      ? AS col2,
      ? AS col3
   ) AS entry
WHERE
   id = entry.id
AND NOT EXISTS (
   SELECT *
   FROM mytable
   WHERE
     col2 = entry.col2 AND
     id <> entry.id
);
4

0 に答える 0