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

Извикването на съхранена функция или процедура няма да вмъкне и да запази промените

Този конкретен случай на употреба е посочен в „Разбиране на Autocommit“:

Пълният контрол върху поведението на „автоматично завършване“ е достъпен с помощта на генеративния Connection.execution_options() метод, предоставен на Connection , Engine , Executable , използвайки флага „autocommit“, който ще включи или изключи автоматичното завършване за избрания обхват. Например, text() конструкция, представляваща съхранена процедура, която записва, може да я използва, така че оператор SELECT да издаде COMMIT:

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

Начинът, по който SQLAlchemy autocommit открива операции за промяна на данни е, че съпоставя израза с шаблон, търсейки неща като UPDATE, DELETE и други подобни. Невъзможно е да открие дали съхранена функция/процедура извършва мутации и така се предоставя изричен контрол върху автоматичното извършване.

Последователността се увеличава дори при неуспех, защото nextval() и setval() повикванията никога не се връщат назад.




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

  2. Как работи функцията Scale() в PostgreSQL

  3. `pg_tblspc` липсва след инсталиране на най-новата версия на OS X (Yosemite или El Capitan)

  4. Как да конфигурирате SELinux за PostgreSQL и TimescaleDB

  5. SQLAlchemy, Psycopg2 и Postgresql COPY