Postgresql 自动更新列并始终生成值

Postgresql 自动更新列并始终生成值,postgresql,postgresql-12,generated-columns,Postgresql,Postgresql 12,Generated Columns,通常,如果我需要在处有一些自动更新的列,如updated\u,我会使用函数和触发器 在Postgres 12中,我们得到了生成的列。它不能直接使用now()函数,但是我可以创建自己的函数来包装它: CREATE FUNCTION now_time() RETURNS timestamptz AS $CODE$ BEGIN RETURN now(); END $CODE$ LANGUAGE plpgsql IMMUTABLE; create table user(

通常,如果我需要在处有一些自动更新的列,如
updated\u,我会使用函数和触发器

在Postgres 12中,我们得到了生成的列。它不能直接使用
now()
函数,但是我可以创建自己的函数来包装它:

CREATE FUNCTION
    now_time()
    RETURNS timestamptz
AS $CODE$
BEGIN
    RETURN now();
END
$CODE$
    LANGUAGE plpgsql IMMUTABLE;

create table user(
    id serial primary key,
    name varchar,
    updated_at timestamptz not null generated always as (now_time()) stored
);
这是有效的


我会得到哪些不必要的副作用?这种方法比旧的好触发器更好吗?

一个副作用是

如果从
pg_dump
还原数据库,则列的值将更改