So-net無料ブログ作成
検索選択

PostgreSQL や Firebird で自動採番された主キーの値を INSERT 時に知る [RDBMS]

・SQLite3 で id INTEGER PRIMARY KEY
・MySQLで id AUTO_INCRIMENT PRIMARY KEY
としておくと、cursor.execute() の後の cursor.lastrowid で、id の値が取ってこれる(Python的に)。
http://www.randynetwork.com/blog/46
それは知ってた。

んでもって、PostgreSQL(psycopg2) でも lastrowid って、とってこれるんだけど、それって oid で、主キーの値でないんだよねぇ、と思っていたら、PostgreSQL 8.2 から INSERT文 にRETURNING 句というのを付けると好きな値を取ってこれるらしい。
http://lists.initd.org/pipermail/psycopg/2008-July/006112.html

そして、Firebird でも 2.0 から使えるようになっていて、しかも FAQ。
http://www.firebirdfaq.org/faq243/
ちょっと試してみたところ、 kinterbasdb でも値が取得できる。

うーん、知らんかった。

ちなみに、Firebird 2.0 以降では、トリガーを使わなくてもシーケンス番号を設定することができるようになったので、これと組み合わせればシーケンス番号の追加のためだけのトリガーを作成しなくてもよくなる。
http://nakagami.blog.so-net.ne.jp/2006-04-01

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。