在postgres sql中创建表作为select删除了表上的not null约束.
例如 :
create table A (char a not null);
create table B as select * from a;
select * from B;-- no constraint is copied from A table
Run Code Online (Sandbox Code Playgroud)
请告诉我如何复制表格数据以及postgres中的约束.
没有单一命令解决方案.
要基于现有表创建表,包括所有约束,请使用:
create table B ( like a including constraints);
Run Code Online (Sandbox Code Playgroud)
完成后,您可以将旧数据复制到新数据:
insert into b
select * from a;
Run Code Online (Sandbox Code Playgroud)
如果在单个事务中执行此操作,则它看起来像是连接到数据库的所有其他会话的原子操作.