当我改变表添加列并设置默认值时,如何更新旧行的值

时间:2013-06-13 09:04:39

标签: postgresql

当我改变表添加列默认值

时,如何更新旧行的值

type smallint NOT NULL DEFAULT 0

但旧行仍然为空,为什么无法自动更新为默认值?

1 个答案:

答案 0 :(得分:3)

在事务中的alter table语句之前发出update语句:

update table set col = 0 where col is null

Alter table不会更新数据,因为它不是它的工作或责任;更新是更新的工作。 (我知道的唯一例外是当您更改列的类型时,在这种情况下,您可以根据需要使用using子句来转换数据。)