PostgreSQL 8.2 Beta

9月 29, 2006 Computer, Database
(Last Updated On: 2018年8月14日)

PostgreSQL 8.2のリリースノートは非常に長いのですがアプリケーションプログラマのコーディングスタイルに大きく影響するのは次の変更(追加)だと思います。

Add INSERT/UPDATE/DELETE RETURNING (Jonah Harris, Tom)

This allows these commands to return values, such as the computed serial key for a new row. In the UPDATE case, values from the updated version of the row are returned.

MySQL等で挿入後のID番号が取得できる機能がPostgreSQLでも作れるようになりました。

create table test (
id serial,
msg text,

primary(id)
)

としてidフィールドの値が何になったのか分からないと困る場合が多かったので

create table test (
id int8,
msg text,

primary(id)
)

としてsequenceの次の値を取得してidにセットしていたと思います。今後はより気軽に

INSERT INTO test(msg) VALUES (‘abc’) RETURNING *;

として挿入後のデータが参照できるようです。
Ruleやストアドプロシージャでデータを加工している場合にも便利ですね。

PostgreSQLの場合、6.xのころからRuleを使うと比較的簡単に全ての変更をログできるのですが、この機能を使えばアプリケーション側でデータのログを取るコードが簡略化できます。データベースレベルではアプリケーションを操作しているユーザIDが分からない場合が多いので便利になります。

投稿者: yohgaki