我的数据库中有一个现有的表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');

10-05 20:33
查看更多