【问题标题】:Auto updated column and generated always values自动更新列并始终生成值
【发布时间】:2020-08-21 22:41:48
【问题描述】:

通常,如果我需要一些自动更新的列作为updated_at,我使用函数和触发器。 For example as it is described here.

在 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
);

这行得通。

我会得到哪些不需要的副作用?这样的方式比旧的好触发器更好吗?

【问题讨论】:

    标签: postgresql postgresql-12 generated-columns


    【解决方案1】:

    副作用是,

    如果数据库从pg_dump 恢复,列的值会发生变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-01-14
      • 2010-10-09
      • 2022-09-30
      • 1970-01-01
      相关资源
      最近更新 更多