【发布时间】:2019-01-30 06:26:50
【问题描述】:
我有一个用例,我将在其中执行用户给我的任意大小的未知 SQL/pglpsql 查询组。我正在编写一个 Python 脚本,它将在一个事务中执行这些查询。现在,在事务中,在提交之前,我希望能够看到有多少行被累积触摸,这样如果该数字超过一个固定的常数阈值,我可以回滚事务。我正在使用 PostreSQL 数据库。有没有办法做到这一点?
【问题讨论】:
标签: database postgresql transactions
我有一个用例,我将在其中执行用户给我的任意大小的未知 SQL/pglpsql 查询组。我正在编写一个 Python 脚本,它将在一个事务中执行这些查询。现在,在事务中,在提交之前,我希望能够看到有多少行被累积触摸,这样如果该数字超过一个固定的常数阈值,我可以回滚事务。我正在使用 PostreSQL 数据库。有没有办法做到这一点?
【问题讨论】:
标签: database postgresql transactions
下面的函数可能会有所帮助:-
create or replace function get_rows_affected() returns void as $$ declare
v_count number;
begin
v_count := 0;
update table_name set col_name = '504';
GET DIAGNOSTICS v_count = ROW_COUNT;
if v_count > 2 then
RAISE EXCEPTION 'more than one row affected --> %', v_count;
end if;
end;
$$ language plpgsql;
【讨论】:
update table_name set col_name = '504'; 我有update... DO $zzz$ .... $zzz$ LANGUAGE plpgsql; 这仍然有效吗?甚至允许这样的封装吗?