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

Вложени транзакции в postgresql 8.2?

Ами имате възможност да използвате вложени транзакции вътре в postgresql с помощта на SavePoints.

Вземете този примерен код:

CREATE TABLE t1 (a integer PRIMARY KEY);

CREATE FUNCTION test_exception() RETURNS boolean LANGUAGE plpgsql AS
$$BEGIN
   INSERT INTO t1 (a) VALUES (1);
   INSERT INTO t1 (a) VALUES (2);
   INSERT INTO t1 (a) VALUES (1);
   INSERT INTO t1 (a) VALUES (3);
   RETURN TRUE;
EXCEPTION
   WHEN integrity_constraint_violation THEN
      RAISE NOTICE 'Rollback to savepoint';
      RETURN FALSE;
END;$$;

BEGIN;

SELECT test_exception();
NOTICE:  Rollback to savepoint
 test_exception 
----------------
 f
(1 row)

COMMIT;

SELECT count(*) FROM t1;
 count 
-------
     0
(1 row)

Може би това ще ви помогне малко.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel 5 актуализира ограничението за един ред не работи

  2. Най-висока за всяка група

  3. Как да извикате съхранена процедура и да получите върната стойност в Slick (с помощта на Scala)

  4. Вмъкване на текст с единични кавички в PostgreSQL

  5. Премахнете една, неуникална стойност от масив