2017-01-11 3 views
2

Guten Morgen. Ich habe eine Tabelle auf MySQL DataBase. In dieser Tabelle gibt es 5 Roboter, die wie 10 Aufzeichnungen pro Stunde schreiben können. Alle 3 Monate ein Skript, das ich erstellt habe, mache eine Kopie der Tabelle und lösche dann alle Tabelleneinträge (Auf diese Weise kann ich die IDs in einer bestimmten Reihenfolge behalten).Behandlung mehrerer MySql-Abfragen (Löschen und Kopieren)

Meine Frage ist. , dass zwei verschiedene Erklärung ist:

CREATE TABLE omologationResult_{date} AS SELECT * FROM omologationResult 
DELETE FROM omologationResult 

, wenn das Skript an einem Punkt in die Tabelle 0, und eine Aufzeichnung von den Robotern wird kopiert wird hinzugefügt, dann ist es kein Problem, weil die SQL-Anweisung von der niedrigsten ID beginnt 'bis zum Ende. Aber wenn das Skript zu delete der Tisch geht und der Roboter darin schreibt. Was wird passieren? Ich verliere den letzten Roboter Rekord?

Und wenn es wahr ist. Was kann ich tun, um eine Kopie der Tabelle zu erstellen und dann nur die Daten zu entfernen, die ich kopiert habe?

Danke

Antwort

2

Ja, das ist kein sicherer Betrieb ist, weil es nicht atomar ist. Es ist durchaus möglich, dass ein anderer Thread zwischen CREATE .. SELECT und DELETE Werte in diese Tabelle einfügt. Eine Option, die Sie haben, ist eine Multi-Table verwenden DELETE

CREATE TABLE omologationResult_{date} AS SELECT * FROM omologationResult; 
DELETE omologationResult FROM omologationResult 
INNER JOIN omologationResult_{date} ON omologationResult_{date}.id = omologationResult.id 

Wird das nur Gegenstände sicherstellen, die in beiden Tabellen existieren wurde von omologationResult gelöscht

+0

Vielen Dank! – andrepogg

+1

Ich bin froh, dass ich geholfen habe – e4c5

Verwandte Themen