node -PG

await db.query(
`DO $$ 
 DECLARE 
     pbid INT;
 BEGIN 
     INSERT INTO public.bp(process_id) SELECT ${ID} RETURNING id INTO pbid;
     COMMIT;
     REFRESH MATERIALIZED VIEW public.vm WITH DATA;
     UPDATE public.bp SET under_process = FALSE, ended_at = now() WHERE id = pbid;
 END;$$;`
);

This script executes fine but ended_at is always the same time as start time.
The refresh takes around 2 min.

附言:我有一台时速new.ended_at := now();英里的扳机101

至少告诉我为什么会发生这种事.

推荐答案

参见manual,now()返回当前事务的开始时间,它们的值在事务期间不会改变.

而CLOCK_TIMESTAMP()返回实际的当前时间,因此即使在单个SQL命令中它的值也会更改

使用Clock_Timestamp()来解决您的问题.

Postgresql相关问答推荐

Qt,PostgreSQL -从NUERIC列检索max int64_t/uint64_t值

如何在Common Lisp中使用Postmodern在表更改时获得通知?

使函数内部动态插入更具可读性

如何在Postgres中对分区表使用Hibernate验证?

在 postgres/presto/AWS-Athena 中,与 array_agg( (col1, col2) ) 相反的是什么来获得每组多行?

当参数大小超过 393166 个字符时,PSQL 准备语句查询挂起

如何在plpgsql中找到一行中的最大值?

PostgreSQL - 如何获得前一个月和一周的价值?

我可以在 Ruby on Rails 上编写 PostgreSQL 函数吗?

冲突中的 Postgres 会更新复合主键

SQL数据库表中的多态性?

gem install pg 无法绑定到 libpq

声明变量set = select

Postgresql:在插入列时(或之前)自动小写文本

获取全文搜索配置语言的完整列表

如何增加 max_locks_per_transaction

在 postgres 中创建超级用户

PostgreSQL/JDBC 和 TIMESTAMP 与 TIMESTAMPTZ

Android 的 JDBC 与 Web 服务

postgresql DB中唯一键的正确数据类型是什么?