Je commence une transaction, qui consiste à insérer plusieurs enregistrements dans une table. Puis-je sélectionner le dernier enregistrement inséré dans la base de données avant la validation de la transaction?dans sqlite3, un select peut-il réussir dans une transaction d'insertion?
Répondre
Oui.
À l'intérieur d'une transaction, votre application voit tout.
Aucune autre transaction, cependant, ne voit une partie de la modification.
Le but d'une transaction est de faire apparaître une séquence d'instructions comme étant une modification atomique de la base de données.
Si vous validez, toutes les instructions de la transaction sont finalisées et tout le monde peut voir les effets.
Si vous annulez, aucune instruction de la transaction n'est finalisée et aucune modification ne se produit dans la base de données.
Toutes les instructions ne peuvent pas faire partie d'une transaction, BTW. DDL (Create and Drop, par exemple) met fin à toute transaction précédente.
Oui, pendant ou après la transaction, vous pouvez utiliser la fonction last_insert_rowid().
La fonction last_insert_rowid() renvoie le ROWID de la dernière ligne insérée à partir de la connexion à la base de données qui a appelé la fonction.
En d'autres termes:
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. Démarrer un nouveau processus dans une transaction
- 2. SQL Server 2005 - Existe-t-il un moyen de verrouiller un SELECT dans une transaction?
- 3. Effectuer un appel EJB sans transaction dans une transaction
- 4. écriture Insérer une requête dans SQLite3 dans l'iPhone
- 5. Sqlite3 utilisant dans l'iPhone
- 6. Transaction distribuée terminée. Soit enrôler cette session dans une nouvelle transaction ou la transaction NULL
- 7. Un état incohérent est-il autorisé dans une transaction?
- 8. SQL double SELECT sur le même champ (mysql ou sqlite3)
- 9. Comment implémenter une transaction dans vb.net?
- 10. NHibernate.NonUniqueObjectException dans une transaction (en utilisant CSLA.Net)
- 11. iPhone + sqlite3 + pas dans la requête
- 12. Comment puis-je réussir à implémenter IDocHostUIHandler dans .NET?
- 13. Transaction dans LLBLGen Pro
- 14. Pourquoi une insertion de 1M est-elle plus lente sans transaction que dans une transaction?
- 15. Importer un vidage SQLite3 dans la base de données
- 16. champ de transaction dans spring.net
- 17. problème iPhone SQLite3 - "Une telle colonne"
- 18. Instruction IF dans un SELECT LINQ
- 19. Générer un champ dans MySQL SELECT
- 20. C# SQL Transaction distribuée terminée. Soit enregistrez cette session dans une nouvelle transaction, soit la transaction NULL
- 21. Niveaux ISOLATION dans la transaction
- 22. Ajouter un élément "Select" dans DropDown
- 23. Comment débloquer un sqlite3 db?
- 24. Utilisation d'un type d'objet dans une instruction select dans Oracle
- 25. Envelopper automatiquement les tests unitaires dans une transaction DB?
- 26. select spécifique dans jquery
- 27. FileInfo.CopyTo/File.Copy est-il garanti pour réussir?
- 28. Obtention d'une transaction Hibernate dans une classe Spring
- 29. Mise à jour sans verrouillage dans une transaction
- 30. Comment créer/supprimer plusieurs éléments dans une transaction