我的数据库中有一个现有表 vault
,其中包含一些数据。我现在在表中添加了一个新列,is_master
,它告诉我某个 vault 是否是 master vault。我使用的 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
有人可以帮助我了解问题所在吗?
最佳答案
首先添加允许空值的列
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
关于sql - 更新现有表时出现空约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725476/