2017-09-06 67 views
1

我們有我們長期使用的內部數據庫命名約定。例如:索引的後綴是「_ix」,外鍵是「_fk」。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,我不能明確定義名稱,沒有手動序列創建 如果有其他選擇,禁止使用自動發電是不對的。 但是,如果我不能在全局級別更改postgres默認值,那麼可能我將不得不在我們的約定中添加一些禁止使用串行類型和一些其他功能的規則。 – keddok

回答

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

在某些情況下,我無法定義顯式名稱。例如:對於串行列類型,postgresql生成名爲{table_name} _ {column_name} _seq的序列,但是我需要{table_name} _seq。 – keddok

+2

@keddok:是的你可以:'創建序列some_table_seq; create table some_table(id integer default nextval('some_table_seq')); alter sequence some_table_seq由some_table.id擁有;' –

+0

謝謝,@a_horse_with_no_name。但要明白,還有其他方法。我不想prohobit使用串口類型,這很方便。我只是想改變postgresql中的默認值。 – keddok

相關問題