Я пытаюсь лучше понять концепцию 'autocommit' при работе с соединением Postgres (psycopg). Допустим, у меня свежее соединение, установите его уровень изоляции ISOLATION_LEVEL_AUTOCOMMIT, затем запустите этот SQL напрямую, без использования методов начала / отката курсора (в качестве упражнения; не говоря, что я на самом деле хочу это сделать):
INSERT A
INSERT B
BEGIN
INSERT C
INSERT D
ROLLBACK
Что происходит с INSERTs C & D?
Является ли autocommit чисто внутренней настройкой psycopg, которая влияет на то, как он запускает BEGINs? В этом случае вышеупомянутый SQL не подвержен уязвимости; ВСТАВКИ A & B фиксируются, как только они сделаны, в то время как C & D выполняются в транзакции и откатываются. На каком уровне изоляции выполняется транзакция?
Или автокоммит является реальной настройкой самого соединения? В таком случае, как это влияет на обработку BEGIN? Это игнорируется или переопределяет параметр автокоммит для фактического запуска транзакции? На каком уровне изоляции выполняется транзакция?
Или я полностью вне цели?