Hello,
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.
Wenn der Trigger wirklich die Tabelle sperren würde, wäre das ja schon der richtige Weg. Aber genaus _das_ funktioniert mWn bei MySQL noch nicht. Die Trigger sind dort noch nebenläufig. Sowie in einen Trigger verzweigt wird, ist die Tabelle wieder offen.
Wie gesagt, ich habe das bisher auch nicht überprüfen können, nur schon viel im Web darüber gelesen.
Ich experimentiere mit den MySQL-Triggern schon eine ganze Weile herum. Was mir immer noch fehlt ist, eine gezielte Exception werfen zu können. Das mache ich bisher immer noch durch eine Schmuddel-Funktion, die einfach eine nicht vorhandene Spalte anspricht. damit failt das Statement und damit der Trigger. Der gefakte Spaltenname ist dann sozusagen der Rückgabewert...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg