访问触发器

时间:2017-08-25 15:25:23

标签: sql postgresql triggers jsonb

我创建了一个函数,将一个值插入到表中插入的每一行的json中。

但是当我执行插入时,它告诉我该列不存在。

这是功能:

CREATE OR REPLACE FUNCTION insert_id_function()
RETURNS trigger AS'
BEGIN
  NEW.previewcontent = previewcontent || ''{"id":1}'';
RETURN NEW;
END;'
LANGUAGE plpgsql VOLATILE;

这是触发器:

CREATE TRIGGER insert_id_trigger
BEFORE INSERT
ON "Telnet"
FOR EACH ROW
EXECUTE PROCEDURE insert_id_function();

这是错误:

`ERROR:  column "previewcontent" does not exist LINE 1: SELECT previewcontent || '{"id":1}'`

这是我的表定义:

enter image description here

1 个答案:

答案 0 :(得分:1)

这是NEW记录的一栏:

NEW.previewcontent = NEW.previewcontent || ''{"id":1}'';

如果previewcontent的类型为jsonb,请使用jsonb_build_object()将当前值id添加到jsonb列:

CREATE OR REPLACE FUNCTION insert_id_function()
RETURNS trigger AS $$
BEGIN
    NEW.previewcontent = NEW.previewcontent || jsonb_build_object('id', NEW.id);
    RETURN NEW;
END;
$$ LANGUAGE plpgsql VOLATILE;