Empiezo una transacción, que consiste en insertar varios registros en una tabla. ¿Puedo seleccionar el último registro insertado fuera de la base de datos antes de comprometer la transacción?en sqlite3, ¿puede una selección tener éxito dentro de una transacción de inserción?
Respuesta
Sí.
Dentro de una transacción, su aplicación lo ve todo.
Sin embargo, ninguna otra transacción ve ninguna parte del cambio.
El objetivo de una transacción es hacer que una secuencia de declaraciones parezca ser un cambio atómico en la base de datos.
Si confirma, todas las declaraciones de la transacción se finalizan y todos los demás pueden ver los efectos.
Si realiza la reversión, no se finaliza ninguna declaración en la transacción y no se produce ningún cambio en la base de datos.
No todas las declaraciones pueden ser parte de una transacción, por cierto. DDL (Crear y soltar, por ejemplo) finalizará cualquier transacción anterior.
Sí, durante o después de la transacción, puede utilizar la función last_insert_rowid().
La función last_insert_rowid() devuelve el ROWID de la última fila insertada desde la conexión de la base de datos que invoca la función.
En otras palabras:
SQLite version 3.6.23
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table T (C);
sqlite> insert into T values ('hello');
sqlite> select last_insert_rowid();
1
sqlite> BEGIN;
sqlite> insert into T values ('test 2');
sqlite> select last_insert_rowid();
2
sqlite> select rowid,* from T;
1|hello
2|test 2
sqlite> ROLLBACK;
sqlite> select last_insert_rowid();
2
sqlite> select rowid,* from T;
1|hello
sqlite>
- 1. ¿Puede tener múltiples MySqlCommand en una sola transacción?
- 2. Cómo usar una consulta de selección dentro de una consulta de inserción en SQL Server 2005
- 3. Usando "IR" dentro de una transacción
- 4. Transacción dentro de la transacción
- 5. sqlite3 comando de shell '.backup' y transacción
- 6. No se puede anidar una instrucción de inserción de inserción
- 7. Determinar si la transacción SQLite3 está activo
- 8. ¿Puedo ser una víctima de interbloqueo si no estoy ejecutando una consulta dentro de una transacción?
- 9. ¿Puede una colección MongoDB tener dentro otra colección?
- 10. Obteniendo una ID dentro de un bloque de transacción PostgreSQL
- 11. ¿Puedo tener una impresora de selección de JavaScript para usar?
- 12. ¿Es necesario encapsular una única instrucción de combinación (con inserción, eliminación y actualización) en una transacción?
- 13. SQLite optimización de inserción de selección múltiple
- 14. estancamiento transacción para consulta de selección
- 15. Django: ahorro de campos múltiples ManyToMany dentro de una transacción
- 16. ¿Se puede usar MySqlBulkLoader con una transacción?
- 17. ¿Cómo fuerzo una actualización de un índice de texto completo dentro de una transacción en mssql?
- 18. ¿Puede tener <span> dentro de <span>?
- 19. ¿Puede GVIM tener una imagen de fondo?
- 20. ¿Por qué Hibernate solo Auto-Flush dentro de una transacción?
- 21. Transacción entre fragmentos solo dentro de una pestaña ActionBar
- 22. ¿Realizar inserción para cada fila tomada desde una selección?
- 23. ¿Cómo puede un índice ralentizar una declaración de selección?
- 24. ¿Puede una interfaz Objective c tener más de una implementación?
- 25. ¿Puede una vista principal tener más de una colección?
- 26. Sqlite3: ¿Desactivar el índice de clave principal durante la inserción?
- 27. ¿Es posible ejecutar múltiples instrucciones DDL dentro de una transacción (dentro de SQL Server)?
- 28. imagen de android dentro de una sola selección
- 29. Cambiar una columna indexada de texto completo dentro de una transacción
- 30. ¿Puede MySql revertir una transacción sql en varias tablas?