Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postgres触发器日期更新失败_Postgresql - Fatal编程技术网

Postgresql Postgres触发器日期更新失败

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

我有一个名为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"();
但是,当我修改列时,会出现错误:

“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()
,而不是这样的触发器。唯一需要触发器的情况是,如果您只想在特定修改时触发触发器

最好对所有内容都使用小写,那么您不需要引号:)