2012-06-08 12 views
5

Ich habe keine expliziten SQL-Sperrbefehle gefunden, bevor ich Zeilen in die Tabelle eingefügt oder aktualisiert habe. Spricht sqlite den Sperrmechanismus selbst an? Das in http://sqlite.org/lockingv3.html beschriebene Funkrufmodul handhabt den Verriegelungsmechanismus. Aber ich bin nicht sicher, ob es irgendwelche Befehle gibt, die der Benutzer verwenden kann, um die Tabellen explizit zu sperren. Bitte um Rat.Expliziter Sperrmechanismus in SQLite

Dank

Antwort

12

Soweit ich weiß, gibt es keine spezielle SQLite-Befehle Verriegelung zu steuern. Sie können sqlite jedoch veranlassen, die Datenbank mit create transaction zu sperren. Zum Beispiel:

BEGIN IMMEDIATE TRANSACTION; 
... 
COMMIT TRANSACTION; 

BEGIN EXCLUSIVE TRANSACTION; 
... 
COMMIT TRANSACTION; 

Wenn Sie die Dokumentation lesen I verknüpft sollten Sie eine bessere Vorstellung von der Differenz zwischen IMMEDIATE & EXCLUSIVE Transaktionen erhalten.

Es mag erwähnenswert sein, dass die Sperren in sqlite für die gesamte Datenbank und nicht nur für einzelne Tabellen gelten, anders als die LOCK TABLE-Anweisung in anderen SQL-Datenbanken.

8

SQLite führt alle erforderlichen Sperren aus, um das Transaktionsschema zu implementieren, das in Ihren SQL-Anweisungen beschrieben wird. Insbesondere, wenn Sie keine beschreiben, erhalten Sie automatisches Commit-Verhalten, wobei eine Sperre für die Dauer jeder Anweisung beibehalten und dann gelöscht wird, wenn die Anweisung abgeschlossen ist. Sollten Sie längere Transaktionen benötigen (oft wahr!), Dann fragen Sie diese explizit mit BEGIN TRANSACTION (oft verkürzt auf BEGIN) und beenden Sie mit COMMIT TRANSACTION (oder). Die Transaktionsverarbeitung wird häufig von Ihrer Sprachschnittstelle für Sie abgewickelt (da dies das Korrigieren der Transaktionslebensdauer erheblich vereinfacht), aber auf der Basisebene kommt es auf BEGIN/COMMIT/ROLLBACK .

Kurz gesagt, Sie haben Transaktionen. Sperren werden verwendet, um implementieren Transaktionen. Sie haben keine rohen Schlösser (was eine gute Sache ist; sie sind ziemlich schwer zu bekommen, als Sie vielleicht auf den ersten Blick denken würden).

Verwandte Themen