如何编译PL / pgSQL块?

时间:2016-01-21 08:30:37

标签: postgresql plpgsql postgresql-9.4

   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

为什么为tm1tm2提供此程序相同的值?

这个代码是不是一步一步执行的?

1 个答案:

答案 0 :(得分:3)

From the manual

  

这些SQL标准函数都根据当前事务的开始时间返回值[...]由于这些函数返回当前事务的开始时间,因此它们的值在事务期间不会更改。这被认为是一个特征:目的是允许单个交易具有“当前”的一致概念。时间,以便同一事务中的多个修改具有相同的时间戳

(强调我的)

您可能需要clock_timestamp()