向PostgreSQL数据库添加新列,设置初始值和设置NOT NULL 一次性完成

Sim*_*ger 6 sql postgresql ddl alter-table

使用 Django,我经常需要向我们的 PostgreSQL 数据库添加新字段。这些字段通常有一个初始值,它们必须设置为 NOT NULL。我的程序包括三个步骤:

1) 添加字段并设置初始值:

ALTER TABLE my_table ADD COLUMN my_field boolean;
UPDATE my_table SET my_field = FALSE;
Run Code Online (Sandbox Code Playgroud)

2)设置非空:

ALTER TABLE my_table ALTER COLUMN my_field SET NOT NULL;
Run Code Online (Sandbox Code Playgroud)

所有三个查询不能一次运行,因为这会导致 PostgreSQL 错误。

执行此任务的最有效方法是什么?我想在单个查询中执行此操作 - 并且一次性添加多个字段。沿着这些路线的东西:

ALTER TABLE my_table ADD COLUMN my_field boolean INITIAL FALSE SET NOT NULL, ADD COLUMN my_field2 boolean INITIAL FALSE SET NOT NULL;
Run Code Online (Sandbox Code Playgroud)

Pet*_*vic 5

你尝试过这个吗?

alter table my_table add column my_field1 boolean default false NOT NULL, 
                     add column my_field2 boolean default false NOT NULL;
Run Code Online (Sandbox Code Playgroud)