在PostgreSQL中,
我的表tab1有col1和col2两列,它们都有not null约束条件。
现在我想要创建一个新表tab2,并使用以下命令将表tab1的定义和数据复制到表tab2中:
但是,表tab2中的col1和col2没有NOT NULL约束条件。如何让新表的列与原表完全相同,包括NOT NULL约束条件呢?
如果可以使用
CREATE TABLE AS SELECT
语句不会创建一个新表并将原表的列及其NOT NULL
约束条件复制到新表中。我的表tab1有col1和col2两列,它们都有not null约束条件。
create table tab1 (col1 varchar(23) not null, col2 int not null)
现在我想要创建一个新表tab2,并使用以下命令将表tab1的定义和数据复制到表tab2中:
create table tab2 as select col1,col2 from tab1
但是,表tab2中的col1和col2没有NOT NULL约束条件。如何让新表的列与原表完全相同,包括NOT NULL约束条件呢?
如果可以使用
CREATE TABLE AS SELECT
语句实现这一点,那将非常感激。在Oracle、DB2和SQLServer中,CREATE TABLE AS SELECT
语句和SELECT .. INTO
语句都可以将NOT NULL CONSTRAINT与数据一起复制。
CREATE TABLE tab3 AS SELECT * FROM TAB1 UNION ALL SELECT * FROM TAB2
这是我实际的要求。 - vchitta