h2,从select更新多个列

时间:2013-09-12 20:35:44

标签: java sql h2

我有一个具有唯一约束的表,我想在不违反唯一约束的情况下进行更新,以避免异常。

使用where子句中的正确条件可以实现这一点。但是,使用PreparedStatement,我希望避免必须设置两次值,一次用于设置值,另一次用于检查值。

我能做什么:

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

请注意,我必须输入两次col2的值,因为我必须为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
);

0 个答案:

没有答案