如何在PostgreSQL中编写查询结果消息,以便通知用户查询成功与否以及受影响记录的数量。
我尝试将log_statement更改为'all',将log_min_duration_statement更改为0,但我得到的只是查询文本。
是否可以将这些消息重定向到Windows操作系统中的日志文件?
答案 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