2008年5月29日(木曜日)

Postgresqlのシーケンス名は63文字までしかうけつけない

カテゴリー: - halt @ 03時18分34秒

haltです。

皆さんはタイトルの件。ご存知でしたか?
ドキュメントの上では

識別子とキーワード
http://www.postgresql.jp/document/current/html/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

の部分に書かれていますが、シーケンス名に限らず、識別子に関しては63文字しかうけつけてくれません。

単純に識別子が63文字までという制限であればさほど問題はないのですが、この制限によってcreate table文発行時に自動生成されるシーケンスス名がまるめられてしまうという現象が発生します。

例えば

 myproject_project_control_log(29文字)

というテーブルがあってこのキーが

 myproject_project_control_log_id(32文字)

の場合

myproject_project_control_log_myproject_project_control_log_id_seq

というシーケンス名になるのですが、これは66文字の為、まるめられて

myproject_project_control_log_myproject_project_control_log_seq

という感じになってしまいます。

シーケンス名は「テーブル名」+「カラム名」+「_seq」という構成なので、決め打ちでシーケンスを参照できるはずなのですが、このまるめ処理によってシーケンスを参照する事ができなくなり、エラーが発生します。

実際はここまで長いシーケンス名になる事はあまりないでしょうが、プレフィクスなどをつけている場合は注意したほうがよいでしょう。


RSS feed for comments on this post.

ƤˤϡޤȤդƤޤ

Ȥ

ʤߥȤդ뤳ȤϽޤ

10 queries. 0.083 sec.
Powered by WordPress Module based on WordPress ME & WordPress

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.