2016-05-10 13 views
0

Ich muss eine gespeicherte Funktion erstellen, die Auslöser bei Bedarf deaktiviert. Zuerst habe ich einen Parameter @ disable_triggers, den ich auf "alle" oder auf bestimmte Trigger-Namen setzen kann. Im Trigger würde ich eine Variable haben, die ich Prozeduren als Rückgabewert zuweise, und wenn es wahr ist, führe ich keinen Triggercode aus. Also in der Prozedur muss ich den Fall mit dem spezifischen Auslösernamen irgendwie behandeln. Die Frage, die ich stelle, ist, wie man den Fall mit spezifischen Triggern behandelt, was zurückzugeben ist.SQL Deaktivieren von Trigger

CREATE PROCEDURE `DisableTriggers`() 
BEGIN 
IF(@disable_triggers = 'all') THEN 
    RETURN 1; 
END IF; 
IF (@disable_triggers CONTAINS 'Specific trigger name') THEN 
Return true to disable specific trigger. <<-- how to return it here. 
END IF; 
END 

+0

Tag die dbms verwendet, ist dies eine produktspezifische Frage! – jarlh

+0

Entschuldigung dafür, es gibt keine allgemeine Lösung zum Deaktivieren von Triggern, also fragte ich – Donatas

+0

Kein Problem. Mit dem (richtigen) Produkt bekommt Ihre Frage bessere Aufmerksamkeit und bessere Antworten, schneller! – jarlh

Antwort

0

Im Allgemeinen gibt es keine Möglichkeit, Trigger in MySQL/MariaDB zu deaktivieren. Sie können Auslöser nur löschen und sie später neu erstellen. Beachten Sie jedoch MDL-Sperren, wenn Sie eine Umgebung mit hoher Auslastung haben.

noch eine Option haben einige Tricks mit Session-Variablen zu tun, wie MySQL disable all triggers