sql >> Databáze >  >> RDS >> PostgreSQL

Volání uložené funkce nebo procedury nevloží a zachová změny

Tento konkrétní případ použití je uveden v části „Porozumění automatickému potvrzení“:

Plná kontrola nad chováním „autocommit“ je dostupná pomocí generativního Connection.execution_options() metoda uvedená v Connection , Engine , Executable , pomocí příznaku „autocommit“, který zapne nebo vypne automatické potvrzení pro vybraný rozsah. Například text() konstrukt představující uloženou proceduru, která provádí potvrzení, ji může použít, takže příkaz SELECT vydá COMMIT:

engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))

Autocommit SQLAlchemy detekuje operace změny dat tak, že porovnává příkaz se vzorem a hledá věci jako UPDATE, DELETE a podobně. Není pro něj možné zjistit, zda uložená funkce/procedura provádí mutace, a proto je poskytována explicitní kontrola nad automatickým potvrzením.

Sekvence se zvýší i při selhání, protože nextval() a setval() hovory nejsou nikdy vráceny zpět.




  1. Cloud Migration 101:Přesun ze serveru SQL Server do Azure

  2. Transformace řádků na sloupce v MySQL

  3. Rails Migrations:pokusili se změnit typ sloupce z řetězce na celé číslo

  4. Jaký je důvod / užitečnost je použití klíčového slova ENABLE v příkazech databáze Oracle