do $$
declare
tm1 timestamp without time zone;
tm2 timestamp without time zone;
begin
select localtimestamp(0) into tm1;
for i in 1..200000000 loop
--just waiting several second
end loop;
select localtimestamp(0) into tm2;
raise notice '% ; %', tm1, tm2;
end;
$$ language plpgsql
为什么为tm1
和tm2
提供此程序相同的值?
这个代码是不是一步一步执行的?
答案 0 :(得分:3)
这些SQL标准函数都根据当前事务的开始时间返回值[...]由于这些函数返回当前事务的开始时间,因此它们的值在事务期间不会更改。这被认为是一个特征:目的是允许单个交易具有“当前”的一致概念。时间,以便同一事务中的多个修改具有相同的时间戳
(强调我的)
您可能需要clock_timestamp()