1. ホーム
  2. oracle

[解決済み] Oracleのテーブル/カラム/インデックス名は、なぜ30文字に制限されているのですか?

2022-04-26 11:34:47

質問

何年も前にこのような制限があったことは理解できますが、現在ではこの制限は簡単に増やせるはずです。オブジェクトの命名規則がありますが、特に外部キーの命名では、この制限にぶつかるケースが常にあります。

なぜこのサイズが大きくないのか、あるいは11gでは大きくなっているのか、実際に知っている人はいますか?


どうやら答えは、防御的にコード化されていない現在のスクリプトが壊れるからだそうです。これは非常に心配なことで、Oracleは次のようなことをしようとしています。 その データベースは、常に改善しなければならないものであり、そうでなければ、あなたの製品は千の死を迎えることになるでしょう。

社内でこのような異論を目にするたびに、そろそろ腹をくくって整理する時期だと思うのです。もし、Oracleのバージョンをアップグレードする際に、チェックやメンテナンスをしていないスクリプトを実行しているなら、その選択の結果に苦しめばいいのです。互換性フラグを提供し、サイズを4000に上げれば、オブジェクトを作成するときに、名前が「OK」であることを確認するために30まで数え続けなければならない無駄な時間を省くことができます。

解決方法は?

ANSI規格だと思うのですが。

EDITです。

実は、標準SQL-92のことだと思います。

標準の後のバージョンでは、オプションで128文字の名前が使えるようですが、Oracleはまだこれをサポートしていません(30文字が使える範囲で部分的にサポートしているか。うーん)。

このページで "F391, Long identifiers" を検索してください... http://stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/ap_standard_sql001.htm

(参照先を探しています)