読者です 読者をやめる 読者になる 読者になる

PostgreSQLのUPDATE文がバージョンによって違う件

PostgreSQLにてUPDATE文を使用する際にはバージョンによってリスト構文で書けない場合があったので備忘録。

PostgreSQL8系

http://www.postgresql.jp/document/8.1/html/sql-update.html

UPDATE table名 SET col1=val1,cal2=val2 WHERE col3='foo';

PostgreSQL9系

http://www.postgresql.jp/document/9.2/html/sql-update.html

PostgreSQL8と同様に書けるが以下のようにリストでも書ける。

UPDATE table名 SET (col1,col2) = (val1,val2) WHERE col3='foo';

つまり、バージョンを意識せずUPDATE文を書く場合は8系で書いておくべきということ*1

*1:上記のPostgreSQLの公式サイトのリファレンスでは8.2からリスト構文で書けるように見えるが、この前実際にsyntax errorになったのは8.3だったような気がするのはなぜ?