kag*_*ag0 5 sql postgresql ddl alter-table
有没有一种方法可以not null在一个语句中向列添加约束并用默认值替换所有现有的空值?
alter table t
alter column c set default 0,
alter column c set not null;
Run Code Online (Sandbox Code Playgroud)
似乎不起作用,给出错误:
Run Code Online (Sandbox Code Playgroud)column "c" contains null values
其实,是。也很简单:
ALTER TABLE t
ALTER COLUMN c TYPE int USING (COALESCE(c, 0))
, ALTER COLUMN c SET DEFAULT 0
, ALTER COLUMN c SET NOT NULL;
Run Code Online (Sandbox Code Playgroud)
db<>在这里摆弄
你只需要思考一下。我们将类型从 更改int为int,因此没有实际更改。但它允许我们插入发挥魔力的USING子句。
| 归档时间: |
|
| 查看次数: |
5566 次 |
| 最近记录: |