sql - 更新现有表时出现空约束错误
问题描述
我的数据库中有一个现有表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
有人可以帮我理解有什么问题吗?
解决方案
第一次添加允许为空的列
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
推荐阅读
- javascript - 使用 npm prod 与 devq 进行编译
- c++ - 有没有办法避免以下代码中的内存泄漏?
- html - 网格布局 Internet Explorer 无法正常工作
- java - 我正在尝试使用 JAVA 从字符串中获取 URL
- python - 数值求解欧拉-拉格朗日方程的算法建议
- xml - 是否可以使用 XSLT 为值数组更新 XML?
- git - Git子模块在我不知道的情况下提交..?
- android - 如何使用 android studio 在地图内制作一个 clicable 圆圈
- ffmpeg - FFMPEG 生成的 MPEG Dash 输出不起作用
- amcharts - amStockCharts 的 dataLoader 与 dataProvider 性能对比