PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Извършване на транзакции при изпълнение на функция postgreql

Това може да стане с помощта на dblink. Показах пример с едно вмъкване, което е заето, ще трябва да добавите своята логика на while цикъл и да запишете всеки цикъл. Можете да 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. Защо pg_restore се връща успешно, но всъщност не възстановява моята база данни?

  2. Java SQL ГРЕШКА:Връзка Table_Name не съществува

  3. PGEast, хардуерен сравнителен анализ и PG Performance Farm

  4. Как мога да задам ограничение на размера за тип данни int в PostgreSQL 9.5

  5. Вмъкване на текстов низ с шестнадесетичен в PostgreSQL като байт