我正在将此数据{"curr": "testcurr","nm": "testnm"}
添加到视图中。使用触发功能不能在视图中插入新行
然后运行一个触发器函数来插入原始表中。
我从触发器函数中收到错误cannot insert into column "curr" of view "tblview"
。
这里是我的代码的一部分:
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
这是我的观点:
CREATE OR REPLACE VIEW data.tblview AS
SELECT gn.id,
gn.nm,
((gn.dat ->> 'curr'::text))::character varying(64) AS curr,
((gn.dat ->> 'symb'::text))::character varying(64) AS symb,
gn.ct
FROM data.gn
那么究竟是为什么我不能插入新行的原因是什么?
你不能插入到视图中。视图是RO对象。基本上看,只是一个选择规则。它只会选择 - 没有保存任何数据 –