dedlfix: Trigger Verständinsproblem

Beitrag lesen

Hi!

Da würde ich keinen Trigger nehmen, sondern zumindest die schreibenden Zugriffe komplett in Stored Procedures kapseln. Damit sollte nach meinem Verständnis auch das Bereits-Verwendet-Problem gar nicht erst auftreten.

Stored Procedures haben mWn aber bei MySQL noch nichts mit der Kapselung der darin ausgeführten Statements zu tun. Das muss man explizit noch z.B. durch ein Table Lock berücksichtigen.

Eine Kapselung ist durch die SP schon vorhanden, aber nicht zwingend eine Atomarisierung. Das jedenfalls ist ein gutes Stichwort und sollte nicht unbeachtet bleiben.

Was ich jedenfalls meinte: In der SP werden die Insert/Update-Statements nacheinander ausgeführt. Der Trigger läuft jedoch, während das eigentliche Insert/Update noch aktiv ist, und sperrt somit die Tabelle. Was jedoch gehen müsste, ist, den gerade bearbeiteten Datensatz zu verändern. Dazu muss man mit NEW.feldname hantieren und darf kein vollständiges UPDATE-Statement absetzen.

Lo!