我的数据库中有一个现有的表vault
,里面有一些数据。现在我需要添加另一列。这是一个布尔值is_master
来判断每个保险库是否是“主”保险库。
可以根据当前值计算保管库是否为主保管库的条件。
如果vault.name
=“主”->is_master = true
否则-->is_master = false
我需要一个SQL脚本,它将运行在数据库中的所有现有的库中,并根据is_master
列计算新的name
列。
我不知道如何在SQL中编写这样的条件,可能应该是这样的:
ALTER TABLE vault
ADD COLUMN is_master BOOLEAN NOT NULL;
INSERT INTO vault (id, created_at, updated_at, company_name, country, is_master)
SELECT id, created_at, updated_at, company_name, country, true // false if not "Master"
FROM vault
WHERE vault.name = 'Master';
有人能帮我解答这个问题吗?
最佳答案
可以指定布尔值:
ALTER TABLE vault ADD COLUMN is_master BOOLEAN NOT NULL;
UPDATE value
SET is_master = (name = 'Master');
编辑:
要处理master的
NULL
值:UPDATE value
SET is_master = (name IS NOT DISTINCT FROM 'Master');