记录postgres查询消息

时间:2015-02-12 09:18:55

标签: windows postgresql logging

如何在PostgreSQL中编写查询结果消息,以便通知用户查询成功与否以及受影响记录的数量。

我尝试将log_statement更改为'all',将log_min_duration_statement更改为0,但我得到的只是查询文本。

是否可以将这些消息重定向到Windows操作系统中的日志文件?

1 个答案:

答案 0 :(得分:0)

您可以使用GET DIAGNOSTICS。如果您是超级用户,可以将结果保存到文件...

create table tablename(version int);
insert into tablename select 9;
do
$$
declare 
 rc text;
begin
  update tablename set version=version where false;
  GET DIAGNOSTICS rc = ROW_COUNT;
  raise info '%',' changed: '||rc;

  update tablename set version=version where true;
  GET DIAGNOSTICS rc = ROW_COUNT;
  raise info '%',' changed: '||rc;

  raise info '%','If you are superuser you can save result to a file...';
  execute $e$copy(select '$e$||rc||$e$') to '/tmp/roes.log'$e$;
  raise exception '%','raiseing error to rollback changes';
end;
$$
;

,结果如下:

INFO:   changed: 0
INFO:   changed: 1
INFO:  If you are superuser you can save result to a file...
ERROR:  raiseing error to rollback changes

********** Error **********

ERROR: raiseing error to rollback changes
SQL state: P0001