Postgresql Postgres触发器日期更新失败
我有一个名为DTUpdated的列,类型为timestamp,带有时区 我创建了一个函数,可以在每次修改时自动更新该列:Postgresql Postgres触发器日期更新失败,postgresql,Postgresql,我有一个名为DTUpdated的列,类型为timestamp,带有时区 我创建了一个函数,可以在每次修改时自动更新该列: CREATE OR REPLACE FUNCTION public."RowModifiedFunction"() RETURNS trigger AS $$ BEGIN NEW.DTUpdated = clock_timestamp(); RETURN NEW; END; 并在表中使用触发器应用它 CREATE TRIGGER "RowMod
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"();
但是,当我修改列时,会出现错误:
“Record new没有字段DTUpdate”(小写)
Postgresql要求对任何包含大写字母的名称使用“这些引号”
CREATE OR REPLACE FUNCTION public."RowModifiedFunction"()
RETURNS trigger AS $$
BEGIN
NEW."DTUpdated" = clock_timestamp();
RETURN NEW;
END;
如果列区分大小写,请使用双引号:
NEW."DTUpdated" = clock_timestamp();
注意:通常将默认值设置为
now()
,而不是这样的触发器。唯一需要触发器的情况是,如果您只想在特定修改时触发触发器最好对所有内容都使用小写,那么您不需要引号:)