首页 > 解决方案 > 更新现有表时出现空约束错误

问题描述

我的数据库中有一个现有表vault,其中包含一些数据。我现在在表中添加了一个新列,is_master它告诉某个保管库是否是主保管库。我使用的 SQL 是:

ALTER TABLE vault ADD COLUMN is_master BOOLEAN NOT NULL;

UPDATE vault
    SET is_master = (name = 'Master');

但是,在对我现有的数据库运行此迁移后,我遇到了一些空约束错误,我不知道为什么。

ERROR: column \"is_master\" contains null values

有人可以帮我理解有什么问题吗?

标签: sqlpostgresql

解决方案


第一次添加允许为空的列

ALTER TABLE vault ADD COLUMN is_master BOOLEAN

然后更新所有行

UPDATE vault
    SET is_master = name is not null and name = 'Master'

然后让它不为空

ALTER TABLE vault
    ALTER COLUMN is_master SET NOT NULL

推荐阅读