我的数据库中有一个现有的表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
有人可以帮助我了解问题所在吗?
答案 0 :(得分:2)
首先添加允许为空的列
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
答案 1 :(得分:0)
您的名称列中有空条目。尝试以下方法过滤掉空名称,然后设置从名称获取的值。默认情况下,您可以在更改
时将值设置为false ALTER TABLE vault ADD COLUMN
is_master BOOLEAN NOT NULL
Set Default FALSE;
UPDATE vault
SET is_master = (name = 'Master')
where name is not null