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)
你尝试过这个吗?
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)