如何在提交Postgresql之前确定事务中受影响的总行数?

时间:2019-01-30 06:26:50

标签: database postgresql transactions

我有一个用例,其中我将执行用户给我的任意大小的未知SQL / pglpsql查询组。我正在编写一个Python脚本,它将在一个事务中执行这些查询。现在,在事务中,在提交之前,我希望能够看到累积地触摸了多少行,这样,如果该数目超过了固定的恒定阈值,我就可以回滚事务。我正在使用PostreSQL数据库。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

以下功能可能会有所帮助:-

    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;