首页 > 解决方案 > 使用 IF/ELSE 语句将列添加到 SQL 中的现有表

问题描述

我正在起诉 PgAdmin4
我有一个名为Development. 此表包含一个名为 的列Customer。我想创建一个名为的新列Target,当客户为 1 时,该列等于 1 null0否则为 1。

这是我的代码:

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

标签: sqlpostgresqlif-statementpgadmin-4

解决方案


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

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

确切的语法因数据库而异。

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


推荐阅读