PostgreSQL 插入到与大小写和连接



我正在尝试创建一个插入触发器,该触发器将从表 A 中获取两个字符串字段(x 和 y(,并将它们连接成表 B 中的单个字段。如果 y 不为空,我想在连接时在 x 和 y 之间添加一个 ' - '。到目前为止,我的代码如下所示:

BEGIN
INSERT INTO B(xy,z)
SELECT y,z,
CASE WHEN y IS NOT NULL then concat('some prefix',x,' - ',y)
ELSE concat('some prefix',x)
END
FROM(SELECT NEW.x, NEW.y NEW.z) as n;
WHERE [some conditions]
RETURN NEW;
END;

据我了解,它应该将"一些前缀 x - y"或"一些前缀 x"放在表 B 的 xy 字段中,将 z 从 A 放在 B 的 z 中,但我收到错误"INSERT 的表达式多于目标列"。有人知道我做错了什么吗?

您的外部选择列表有三个术语 -yzcase表达式,只需删除y并重新排序其他两个,您应该没问题:

INSERT INTO B(xy,z)
SELECT
CASE WHEN y IS NOT NULL then concat('some prefix',x,' - ',y)
ELSE concat('some prefix',x)
END, -- First expression, goes into b.xy
z -- SEcond expression, goes into b.z
FROM(SELECT NEW.x, NEW.y NEW.z) as n;
WHERE [some conditions]

最新更新