使用 IF/ELSE 语句将列添加到 SQL 中的现有 table

Add column to existing table in SQL with IF/ ELSE Statement

我要起诉 PgAdmin4
我有一个名为 Development 的 table。此 table 包含名为 Customer 的列。我想创建一个名为 Target 的新列,当客户为 null 时等于 1,否则为 0

这是我的代码:

ALTER TABLE development ADD COLUMN Target INTEGER;

IF Customer IS NULL then
  SET Target = 1;
else
  SET Target = 0;
END if;

我收到这个错误:

ERROR:  syntax error at or near "IF"
LINE 3: IF Customer IS NULL then
        ^
SQL state: 42601
Character: 53

您可以使用带有 case 表达式的 update 语句:

UPDATE mytable
SET target = CASE WHEN customer IS NULL THEN 1 ELSE 0 END

大多数数据库都支持生成的列。语法是这样的:

alter table development add column int generated always as
    (case when customer is null then 1 else 0 end);

具体语法因数据库而异。

这比向 table 添加新列要强大得多,因为生成的列始终具有正确的值——即使没有 update.