2016-08-04 64 views
1

Ich habe einen MySQL-Trigger, der mit einer case-Anweisung endet, die den Eintrag einer anderen Spalte betrifft.MySQL - Wie kann ich einen benutzerdefinierten Wert eingeben und den Trigger überschreiben?

NEW.reference_column = CASE NEW.entry_column 
WHEN "Test Value 1" THEN 1 
WHEN "Test Value 2 " THEN 2 
WHEN "Test Value 3" THEN 3 
ELSE 4 END; 

Aber manchmal gibt es Werte in der reference_column, die nicht vorhergesagt werden können, und ich will nicht der sonst Wert eingefügt werden, sondern ein benutzerdefinierten ein. Wie kann ich einen benutzerdefinierten Wert in der Spalte entry_column eingeben und den Trigger überschreiben, so dass er den Wert else nicht einfügt?

Edit: Ich habe versucht, den ELSE-Wert zu überspringen, aber dann gibt es mir nur eine leere Korrektur beim Versuch, zu überschreiben.

Antwort

1

Hmmmm. . . Würde Logik wie das tun, was Sie wollen?

NEW.reference_column = (CASE WHEN NEW.entry_column = 'Test Value 1' THEN 1 
          WHEN NEW.entry_column = 'Test Value 2' THEN 2 
          WHEN NEW.entry_column = 'Test Value 3' THEN 3 
          WHEN NEW.entry_column LIKE 'Custom %' 
          THEN substring_index(NEW.entry_column, ' ', -1) + 0 
          ELSE 4 
         END); 

Neue Werte würden als 'Custom 5' eingefügt werden.

+1

Danke! Ihre Antwort hat mir die Möglichkeit gegeben, die Lösung zu entwerfen. –