使用触发器函数将jsonb插入表时出错

时间:2017-08-16 07:57:13

标签: postgresql triggers insert jsonb

我目前正在插入此数据{"curr": "testcurr","nm": "testnm"} 一个观点。

然后运行触发器功能以插入到原始表中。

我从触发器功能中收到错误column "curr" does not exist

以下是我的代码部分:

IF (tg_op = 'INSERT') THEN
                NEW."dat"= jsonb_build_object("curr",NEW."curr","symb",NEW."symb");
                NEW."ct"=now();
                INSERT INTO data.tbl
                    (
                    "nm",
                    "dat",
                    "ct",
                    )
                    VALUES
                    (
                    NEW."nm",
                    NEW."dat"
                    NEW."ct"
                    )returning "id" into NEW.id;
END

如您所见,原始表格中不包含' curr'专栏,但我的帖子数据不应该有任何问题吗?

1 个答案:

答案 0 :(得分:1)

变化:

jsonb_build_object("curr",NEW."curr","symb",NEW."symb")

为:

jsonb_build_object('curr',NEW."curr",'symb',NEW."symb")

https://www.postgresql.org/docs/current/static/functions-json.html 查看示例 - 获取密钥"foo",您传递字符串'foo'

双引号用于标识符 - 列,关系等名称 - 请检查https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS