sql >> Database teknologi >  >> RDS >> PostgreSQL

Indlejrede transaktioner i postgresql 8.2?

Nå, du har mulighed for at bruge indlejrede transaktioner inde i postgresql ved hjælp af SavePoints.

Tag dette kodeeksempel:

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)

Måske vil dette hjælpe dig en lille smule.



  1. heroku db forbindelse afvist

  2. Sådan får du værdier fra MySQL(5.6)-kolonnen, hvis den indeholder json-dokument som streng

  3. Opdater html-siden, når en ny sql-indgang er blevet indtastet

  4. Kan ikke oprette forbindelse til ekstern mysql-server ved hjælp af unixodbc, libmyodbc