2017-09-06 6 views
1

長年使用されている内部db命名規則があります。たとえば、索引の接尾辞は外部キー - "_fk"の場合 "_ix"です。PostgreSQL。デフォルトの名前をカスタマイズすることは可能ですか?

これらの表記法は、default postgresql naming conventionsと競合しています。インデックスは「_idx」、外部キーは「_fkey」です。

たとえば、私がインデックスを作成し、このようなインデックス名を明示的に定義しない場合CREATE INDEX ON a (id);私はこのようなインデックス名を取得します:a_id_idx。しかし、postgresqlだけでなく、a_id_ixにも使用されている私たちの規約によると、

私たちの規則に合わせて自動生成された名前付けパターンを変更するのが最善の方法です。シンプルにするべきだと思われますが、どうやってそれを行うことができません。

すべてのソリューションはありますか?

+0

デフォルト以外の名前を使用する場合は、デフォルト以外の名前を設定します。 –

+0

[私はまだそれは悪い考えだと思うが、] https://www.postgresql.org/docs/9.6/static/sql-alterindex.html 'ALTER INDEX [IF EXISTS] name rename to new_name;' – wildplasser

+0

@CraigRinger 1. {table_name} _ {column_name} _seqという名前のシーケンスを生成する直列型(非常に便利)があり、私は手動でシーケンスを作成せずに明示的に名前を定義することはできません 2.代替案がある場合、自動生成を全く使用しないことは間違いです。 しかし、もし私がpostgresのデフォルトをグローバルレベルで変更できないのであれば、おそらくシリアルタイプやその他の機能の使用を禁止する規則をいくつか追加する必要があります。 – keddok

答えて

0
CREATE INDEX index_name ON a (id); 
+0

明示的な名前を定義できない場合もあります。例えば:serial column typeの場合postgresqlは{table_name} _ {column_name} _seqという名前のシーケンスを生成しますが、{table_name} _seqが必要です。 – keddok

+2

@keddok:そうすることができます: 'create sequence some_table_seq;テーブルを作成するsome_table(id整数デフォルトのnextval( 'some_table_seq')); some_table.idによって所有されているsome_table_seqを変更してください。 ' –

+0

ありがとう、@a_horse_with_no_name。しかし、他の方法があることを理解する。私はシリアルタイプの使用をprohobitしたくない、それは非常に便利です。私はpostgresqlのデフォルトを変更したいだけです。 – keddok

関連する問題