2012-06-08 9 views
5

Non ho trovato comandi di blocco sqlite espliciti prima di inserire o aggiornare righe nella tabella. Sqlite gestisce il meccanismo di blocco da solo? Il modulo cercapersone descritto in http://sqlite.org/lockingv3.html gestisce il meccanismo di blocco. Ma non sono sicuro che ci siano comandi che l'utente può utilizzare per bloccare esplicitamente le tabelle. Per favore consiglioMeccanismo di blocco esplicito in SQLite

Grazie

risposta

12

Per quanto so che ci sono i comandi non sqlite dedicato per controllare bloccaggio. Tuttavia è possibile ottenere sqlite per bloccare il database utilizzando create transaction. Per esempio:

BEGIN IMMEDIATE TRANSACTION; 
... 
COMMIT TRANSACTION; 

BEGIN EXCLUSIVE TRANSACTION; 
... 
COMMIT TRANSACTION; 

Se leggete la documentazione ho linkato si dovrebbe avere una migliore idea sulla differenza tra IMMEDIATE & EXCLUSIVE transazioni.

Potrebbe valere la pena notare che i blocchi in sqlite si applicano all'intero database e non solo alle singole tabelle, a differenza dell'istruzione LOCK TABLE in altri database sql.

8

SQLite esegue tutto il blocco necessario per implementare lo schema di transazione descritto dalle istruzioni SQL. In particolare, se non ne descrivi alcuno, si ottiene un comportamento di auto-commit, con un blocco trattenuto per la durata di ciascuna istruzione e poi rilasciato al termine dell'istruzione. Se hai bisogno di transazioni più lunghe (spesso vere!), Le chiedi esplicitamente con BEGIN TRANSACTION (spesso abbreviato in BEGIN) e finisci con COMMIT TRANSACTION (o ROLLBACK TRANSACTION). La gestione delle transazioni viene spesso gestita dall'interfaccia della lingua (in quanto ciò semplifica notevolmente l'accesso, la durata della transazione a un blocco di codice o una chiamata al metodo), ma al livello base scende a BEGIN/COMMIT/ROLLBACK .

In breve, hai transazioni. I blocchi vengono utilizzati per implementare le transazioni. Non hai serrature grezze (che è una buona cosa, sono piuttosto difficili da ottenere più di quanto si possa pensare dal primo sguardo).

Problemi correlati