iphone - descargar - ios 12
Determinar si la transacción SQLite3 está activa (3)
En SQLite, las transacciones creadas con BEGIN TRANSACTION ... END TRANSACTION no anidan.
Para transacciones anidadas, necesita usar los comandos SAVEPOINT y RELEASE.
Estoy ejecutando una END TRANSACTION
en mi base de datos y ocasionalmente recibo un error
# 1 que "no puede confirmar, ninguna transacción está activa"
¿Hay alguna manera de determinar si una transacción está activa antes de intentar una confirmación? He estado siguiendo mi "BEGIN TRANSACTIONS"
a mano, pero creo que hay una mejor manera.
Estoy usando la API C
Eso es raro. Pensé que sqlite siempre estaba en una transacción, ya sea explícitamente creada por usted o implícitamente creada por sqlite:
http://www.sqlite.org/lang_transaction.html
Así que supongo que el error significa que no está en una transacción que inició ... y si eso es lo que necesita saber, parece correcto que sqlite espere que se mantenga al tanto. No es terriblemente conveniente, por supuesto, pero creo que ese es el costo de una API simple. = /
Es posible que desee comprobar esto:
http://www.sqlite.org/c3ref/get_autocommit.html
Según la página, si está en una transacción, sqlite3_get_autocommit()
devolverá 0.