PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Thực hiện các giao dịch trong khi thực hiện một hàm postgreql

Điều này có thể được thực hiện bằng cách sử dụng dblink. Tôi đã đưa ra một ví dụ với một lần chèn được cam kết, bạn sẽ cần thêm logic vòng lặp while của mình và cam kết mọi vòng lặp. Bạn có thể http://www.postgresql.org/docs/9.3/static/contrib-dblink-connect.html

CREATE OR REPLACE FUNCTION log_the_dancing(ip_dance_entry text)
RETURNS INT AS
$BODY$
    DECLARE
    BEGIN
        PERFORM dblink_connect('dblink_trans','dbname=sandbox port=5433 user=postgres');
        PERFORM dblink('dblink_trans','INSERT INTO dance_log(dance_entry) SELECT ' || '''' || ip_dance_entry || '''');
        PERFORM dblink('dblink_trans','COMMIT;');
        PERFORM dblink_disconnect('dblink_trans'); 

        RETURN 0;
    END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

ALTER FUNCTION log_the_dancing(ip_dance_entry text)
  OWNER TO postgres;

BEGIN TRANSACTION;
  select log_the_dancing('The Flamingo');
  select log_the_dancing('Break Dance');
  select log_the_dancing('Cha Cha');
ROLLBACK TRANSACTION;

--Show records committed even though we rolled back outer transaction
select *
from dance_log;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quét đống Bitmap trong một kế hoạch truy vấn là gì?

  2. Postgres Left Tham gia với điều kiện ở đâu

  3. Tự tham gia đệ quy Postgresql

  4. Làm thế nào để hiển thị số hàng trong truy vấn PostgreSQL?

  5. Cách lấy thời gian hiện tại trong PostgreSQL