PostgreSQL獲取操作影響的行數

jopen 10年前發布 | 42K 次閱讀 PostgreSQL 數據庫服務器

如何來獲取普通的操作所影響的行數,PostgreSQL里面有一個內置的變量DIAGNOSTICS與ROW_COUNT可以做到這一點。

一、環境:
DB:9.4beta3

二、準備:

postgres=# create table test(id int);
CREATE TABLE
postgres=# insert into test select generate_series(1,20);
INSERT 0 20
postgres=# select * from test;

id

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (20 rows)</pre>三、創建函數:

CREATE OR REPLACE FUNCTION fun_affect_rows()
  RETURNS text AS
$BODY$

declare v_count int;begin

insert into test values(99),(98); GET DIAGNOSTICS v_count = ROW_COUNT; raise notice '本次插入數據量 %', v_count;

delete from test where id < 15; GET DIAGNOSTICS v_count = ROW_COUNT; raise notice '本次刪除數據量 %', v_count;

update test set id = 100 where id >90; GET DIAGNOSTICS v_count = ROW_COUNT; raise notice '本次更新數據量 %', v_count;

return '測試完畢'; end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION fun_affect_rows() OWNER TO postgres;</pre>四、運行情況:

postgres=# select * from fun_affect_rows();
NOTICE:  本次插入數據量 2
NOTICE:  本次刪除數據量 14
NOTICE:  本次更新數據量 2

fun_affect_rows

測試完畢 (1 row)</pre>如果要返回DML的結果,那就用returning就可以了

五、參考
http://www.postgresql.org/docs/9.0/static/plpgsql-statements.html

來自:http://my.oschina.net/Kenyon/blog/343426

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!