我有一个名为DTUpdated的列,其类型为timestamp,带有时区。
我创建了一个函数,可以在每次修改时自动更新该列:
CREATE OR REPLACE FUNCTION public."RowModifiedFunction"()
RETURNS trigger AS $$
BEGIN
NEW.DTUpdated = clock_timestamp();
RETURN NEW;
END;
并在该表中使用触发器
CREATE TRIGGER "RowModifiedTrigger"
BEFORE UPDATE
ON public."Departments"
FOR EACH ROW
EXECUTE PROCEDURE public."RowModifiedFunction"();
但是当我修改一列时,我得到错误:
"记录新的没有字段dtupdated" (小写)。
答案 0 :(得分:2)
Postgresql需要"这些引号"在包含大写的任何名称上。
CREATE OR REPLACE FUNCTION public."RowModifiedFunction"()
RETURNS trigger AS $$
BEGIN
NEW."DTUpdated" = clock_timestamp();
RETURN NEW;
END;
答案 1 :(得分:0)
如果列是区分大小写的,请使用双引号:
NEW."DTUpdated" = clock_timestamp();
注意:通常将默认值设置为now()
而不是此类触发器。如果您希望仅在特定修改时触发,则需要触发的唯一情况