sql - 使用 IF/ELSE 语句将列添加到 SQL 中的现有表
问题描述
我正在起诉 PgAdmin4
我有一个名为Development
. 此表包含一个名为 的列Customer
。我想创建一个名为的新列Target
,当客户为 1 时,该列等于 1 null
,0
否则为 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
解决方案
大多数数据库都支持生成的列。语法是这样的:
alter table development add column int generated always as
(case when customer is null then 1 else 0 end);
确切的语法因数据库而异。
这比向表中添加新列强大得多,因为生成的列始终具有正确的值——即使没有update
.
推荐阅读
- javascript - javascript - 一次替换多个文本
- json - 如何在 golang 或一般类型的语言中处理 JSON 响应中的不同类型
- c# - 我可以在 System.Speech.Synthesis 中使用 Microsoft 语音以外的语音吗
- python - 如何用 Python 制作一个有生命的游戏?
- postgresql - 在函数中加密密码不起作用 - postgres
- c# - 即使站点未运行或导致站点始终处于活动状态,也使计时器工作
- c# - 如何将文件(内容)从 Angular 5 应用程序传递到 C# .NET Web Api 2?
- c# - 在卸载 Wix 时删除整个用户帐户足迹
- python - 目标检测的输入图像大小估计中的感受野
- powershell - Powershell 脚本可以手动工作,但不能在任务调度程序中工作