我想從另一個表(模式副本)創建一個表,但不是數據,只是模式。有沒有SQL或Postgres的方式?希望能夠複製索引&限制。從另一個表創建表
同樣,一旦創建表,可以保持模式同步,以防將來對原始表進行任何更改。將節省我對模式的手動同步。可能是Postgres有什麼?
我想從另一個表(模式副本)創建一個表,但不是數據,只是模式。有沒有SQL或Postgres的方式?希望能夠複製索引&限制。從另一個表創建表
同樣,一旦創建表,可以保持模式同步,以防將來對原始表進行任何更改。將節省我對模式的手動同步。可能是Postgres有什麼?
是,使用create table like
create table new_table (like old_table);
更多細節的手冊中:
http://www.postgresql.org/docs/current/static/sql-createtable.html
的like
子句將複製指數,並和檢查約束,但不是外鍵約束。
雖然它不會讓new_table與舊的「保持同步」 - 但我不清楚爲什麼你會這麼想。
複製你爲什麼需要這個只有
Select * into newtable from oldtable where 1=2
'select .. into .. .'是一種舊的棄用語法,僅用於向後兼容。最好使用標準SQL:'create table newtable as select * from ...' – 2014-10-30 21:09:30
結構?你想解決的根本問題是什麼?這聽起來有點像你應該重新考慮你創建表和約束的方式。你有任何結構化的方式來做到這一點?當使用乾淨結構的SQL腳本(存儲在版本控制系統中)時,您可以隨時在任何您想要的數據庫中重新創建表。我們有很好的使用Liquibase的經驗。 – 2014-10-30 18:18:25
可能的副本[複製表格(包括索引)在postgres中](http://stackoverflow.com/questions/198141/copy-a-table-including-indexes-in-postgres) – 2014-10-30 18:21:40