在PostgreSQL中CREATE TABLE AS SELECT

vch*_*tta 3 postgresql

CREATE TABLE AS SELECTPostgreSQL中的语句不是使用具有NOT NULL原始表约束的列创建新表.

我的表tab1有col1和col2,没有空约束.

create table tab1 (col1 varchar(23) not null, col2 int not null)

现在我正在创建一个新表tab2,其中包含表tab2的定义和数据,如下所示:

将表tab2创建为选项col1,从tab1创建col2

但是tab2的col1和col2没有NOT NULL约束.如何从原始表中的新表列中获取确切的NOT NULL约束状态?

如果有任何方法可以使用CREATE TABLE AS SELECT非常感谢的语句来实现这一点.CREATE TABLE AS SELECTOracle,DB2和SELECT .. INTOSQLServer中的语句将NOT NULL CONSTRAINT与数据一起复制.

And*_*rus 8

PostgreSQL中,您正在寻找的功能

CREATE TABLE tablename 
(LIKE parent_table INCLUDING CONSTRAINTS) /* other options too */ 
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE AS据我所知,可以完全随意使用SELECT,PG不检查这是否只涉及一个表,更不用说尝试推断约束了.