CREATE TABLE AS SELECT
PostgreSQL中的語句不會創建具有原始表的NOT NULL
約束的列的新表。PostgreSQL中的CREATE TABLE AS SELECT
我的表格tab1的col1和col2不是null約束。
create table tab1 (col1 varchar(23) not null, col2 int not null)
,現在我創造與定義,如下表TAB2的數據的新表TAB2:
創建TAB1表TAB2作爲選擇COL1,COL2
但是,tab2的col1和col2沒有NOT NULL約束。如何在原始表的新表列中獲得確切的NOT NULL約束狀態?
如果有什麼辦法可以使用CREATE TABLE AS SELECT
來達到這個目的,非常感謝。 Oracle中的CREATE TABLE AS SELECT
語句,SQLServer中的DB2和SELECT .. INTO
將NOT NULL CONSTRAINT與數據一起復制。
[創建表作爲select可能會在postgresql中刪除非空約束](http://stackoverflow.com/questions/7738691/creating-table-as-select-is-droping-the-not-null -constraints-in-postgresql) –
1小時前已經提出了同樣的問題。順便說一句:在Oracle中,'CREATE TABLES AS SELECT'也不會複製約束條件。 –
@a_horse_with_no_name我剛剛在Oracle中進行了測試,它完全將NOT NULL約束複製到父表的新表的列中。從類似的線程,我可以使用INCLUDE cluase複製約束,但我如何使用這個,如果我想從查詢創建一個新的表,如UNION ALL等如下所示:CREATE TABLE tab3 AS SELECT * FROM TAB1 UNION所有SELECT * FROM TAB2'這是我的實際需求。 – vchitta