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

Я бы не советовал, поскольку пользователь может нажать на нежелательную кнопку. Я никогда не видел такого вида UX в коммерческих программах.

Обычно программное обеспечение предлагает пользователю нажать кнопку с комбинацией клавиш, начинающейся с Alt (например, «Alt + O» для OK). Обычно, когда пользователь нажимает Alt, O OK будет подчеркнут, чтобы предположить, что такая функция существует. Это часто реализуемо неявно как мнемоника в механизме диалога (например, Java Swing).

11
задан Michael Kohne 15 October 2008 в 12:41
поделиться

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)

Возможно, это выручит Вас немного.

5
ответ дан 3 December 2019 в 11:38
поделиться

Я закончил тем, что 'решил' свою проблему из полосы - я использую сценарий жемчуга для переделывания входных сценариев, чтобы устранить их транзакцию/вызовы подтверждения запуска, затем продвинуть их всех в один файл, который получает свою собственную транзакцию/фиксацию запуска.

0
ответ дан 3 December 2019 в 11:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: