2016-06-10 11 views
0

Basierend auf this question und dieser Absatz der documentation:Wie kann ich verstehen, dass meine Tabelle entweder Transaktion oder Sperre ist?

Bei transaktionssicheren Tabellen, Ausfall einer Erklärung sollen durch die Anweisung ausgeführt Rollback aller Änderungen verursachen. Das Fehlschlagen eines Triggers führt dazu, dass die Anweisung fehlschlägt, sodass ein Triggerfehler ebenfalls zu einem Rollback führt. Bei nichttransaktionsfähigen Tabellen kann ein solcher Rollback nicht durchgeführt werden. Obwohl die Anweisung fehlschlägt, bleiben alle vor dem Fehlerpunkt vorgenommenen Änderungen wirksam.

Ich fand heraus, ob mein Tisch Transaktions dann ist sowohl die Abfrage und Trigger werden aufeinander sein abhängt. Ich meine, entweder beide Abfrage und Trigger wird erfolgreich sein oder keiner von ihnen.

Wie kann ich erkennen, dass meine Tabelle Transaktion oder Sperre ist? Darauf hingewiesen, dass ich verwende MySQL, InnoDB-Engine und PDO (wenn dies wichtig ist, zu wissen)

+0

InnoDB-Tabellen sind Transaktionstabellen. Nicht-transaktionale Tabellen wären z.B. MyISAM. Sperren hängen mit Transaktionen zusammen, funktionieren aber auf beiden Arten, daher bin ich mir nicht ganz sicher, was Sie damit meinen. – Solarflare

Antwort

1

Sie können die Art der Tabelle herausfinden, die Sie verwenden entweder über SHOW CREATE TABLE für jeden einzelnen ein und sucht die ENGINE Parameter oder verwenden Sie SHOW TABLE STATUS und betrachten Sie die Engine Spalte.

InnoDB unterstützt Transaktionen. MyISAM, die Legacy-MySQL-Engine, nicht.

Sie sollten auch Ihre Annahmen hinsichtlich der für Sie wichtigen Systeme testen. Nur weil Sie eine bestimmte Engine lokal verwenden, bedeutet dies nicht, dass sie so bereitgestellt wurde. Der Serverstandard ist möglicherweise anders.

+0

Ah ok .... thx .. upvote –

+0

So ist [diese Tabelle] (http://i.stack.imgur.com/djw0B.png) Transaktion? –

+0

Wenn es InnoDB sagt, ja. Wenn es MyISAM sagt, sollten Sie es wahrscheinlich zu InnoDB wechseln. – tadman