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が分からない場合が多いので便利になります。
Leave a Comment