MySQL: Lock tables

tipster

Grünschnabel
Hallo!

Ich habe eine php Applikation geschrieben und stehe vor folgendem Problem. Ich muss in regelmäßigen Abständen die Daten gewisser Tabellen löschen, danach werden diese Tabellen mit neuen Informationen gefüttert. Allerdings überschneidet sich der Löschvorgang mit den Inserts sodass die neuen Inserts zum teil wieder mitgeloschen werden. Meine Frage wie kann ich die Tabellen für alle INSERT INTO Querys sperren bis die TRUNCATE Querys fertig ausgeführt sind bzw da zu keinen Überschneidungen kommt. Ist es möglich dies mit LOCK TABLES zu realisieren?

lg tipster
 
Jain. Es kommt darauf an, wie die INSERTs getätigt werden. Liegen die INSERTs in einem Transaktionsblock? Wenn ja, geht das in die Hose, denn START TRANSACTION hebt den Lock implizit auf. Ansonsten gibt's gegen LOCK/UNLOCK TABLES nichts einzuwenden. "Einfach" um den Anweisungblock zum Löschen und ab dafür.

EDIT: Natürlich musst du noch den Lock-Typ angeben. Aber am besten wäre es ohnehin, wenn du dir mal das Manual zu diesem Thema durchliest: http://dev.mysql.com/doc/refman/5.1/de/lock-tables.html
 
Zurück