2016-09-30 5 views
2

Aus der MemSQL-Dokumentation ist nicht ersichtlich, ob Transaktionen mit mehreren Operationen unterstützt werden oder nicht.MemSQL-Transaktionen mit mehreren Operationen

In einfachen Worten sagen sie, ich habe folgende Transaktion

BEGIN 
INSERT smth INTO table1 
INSERT smth INTO table2 
UPDATE table2 SET smt 
DELETE FROM table3 WHERE smth 
COMMIT 

Wird dies eine atomare Operation sein bedeutet, dass entweder die ganzen Transaktionen erfolgreich ist oder Rollbacks, wenn es ein Operand leasen ausfällt?

Antwort

2

Diese werden unterstützt, ja. Sie können dies beobachten, wenn Sie ein Rollback ausführen oder wenn Sie vor dem Commit ausgewählte Abfragen von einem anderen Client ausführen, werden keine der DML-Effekte angezeigt.

+0

Wird irgendetwas nicht unterstützt? Als ein Beispiel weiß ich, dass INSERT ... SELECTS nicht innerhalb von Transaktionen ausgeführt werden kann, da, wie ich denke, nur die Isolationsstufe READ_COMMITTED unterstützt wird. Würde es Ihnen etwas ausmachen, etwas anderes zur Liste hinzuzufügen? – dmagda

+0

Wo haben Sie gesehen, dass Insert-Selects nicht in Transaktionen ausgeführt werden können? Es sollte funktionieren: –

+0

'' ' memsql> Tabelle erstellen t (a int, b int); memsql> beginnen; Abfrage OK, 0 Zeilen betroffen (0.00 Sek.) memsql> in t-Werte einfügen (1, 2); Abfrage OK, 1 Zeile betroffen (0.00 Sek.) memsql> in t einfügen * aus t auswählen; Abfrage OK, 1 Zeile betroffen (0.00 Sek.) Datensätze: 1 Duplikate: 0 Warnungen: 0 memsql> select * from t; + ------ + ------ + | a | b | + ------ + ------ + | 1 | 2 | | 1 | 2 | + ------ + ------ + 2 Zeilen im Satz (0,00 Sek.) memsql> Rollback; Abfrage OK, 0 Zeilen betroffen (0.00 Sek.) memsql> select * from t; Empty set (0,00 sec) '' ' –