2014-10-30 118 views
1

我想從另一個表(模式副本)創建一個表,但不是數據,只是模式。有沒有SQL或Postgres的方式?希望能夠複製索引&限制。從另一個表創建表

同樣,一旦創建表,可以保持模式同步,以防將來對原始表進行任何更改。將節省我對模式的手動同步。可能是Postgres有什麼?

+1

結構?你想解決的根本問題是什麼?這聽起來有點像你應該重新考慮你創建表和約束的方式。你有任何結構化的方式來做到這一點?當使用乾淨結構的SQL腳本(存儲在版本控制系統中)時,您可以隨時在任何您想要的數據庫中重新創建表。我們有很好的使用Liquibase的經驗。 – 2014-10-30 18:18:25

+0

可能的副本[複製表格(包括索引)在postgres中](http://stackoverflow.com/questions/198141/copy-a-table-including-indexes-in-postgres) – 2014-10-30 18:21:40

回答

3

是,使用create table like

create table new_table (like old_table); 

更多細節的手冊中:
http://www.postgresql.org/docs/current/static/sql-createtable.html

like子句將複製指數,並和檢查約束,但不是外鍵約束。

雖然它不會讓new_table與舊的「保持同步」 - 但我不清楚爲什麼你會這麼想。

0

複製你爲什麼需要這個只有

Select * into newtable from oldtable where 1=2 
+2

'select .. into .. .'是一種舊的棄用語法,僅用於向後兼容。最好使用標準SQL:'create table newtable as select * from ...' – 2014-10-30 21:09:30