2017-04-13 3 views
0

Ich habe zwei Tabellen & müssen einen TRIGGER für dieses Szenario schreiben.

1. Parameters_Table (int PKID, string param_name, string param_value)
2. Tokens_Table (int PKID, string Artikel, string Gültigkeit)

Ich habe eine Verpflichtung aller Einträge in Tokens_Table wenn ein Löschen Eine bestimmte Zeile, in der param_name = 'Enterprise' in Parameters_Table seinen 'param_value' ändert. Der Wert wird von UI geändert.
z. B. Zeile < 7, Unternehmen, 60> Änderungen an < 7, Unternehmen, 25> in Parameters_Table dann löschen Sie alle Einträge von Tokens_Table.CREATE TRIGGER zur Überwachung einer bestimmten Tabellenzeile

Wie soll ich den Trigger schreiben. Bitte führen. (Ich brauche diese Datenbank für Informix zu schreiben, aber mysql-Abfragen würde auch helfen)

+0

Sie sagen "Enterprise" und dann "Enterprise" - welchen Fall machen Sie sich Sorgen? Ist es "wenn eine Zeile in der Parameters_Table mit einem Parameternamen von 'enterprise' den Parameterwert ändert, dann muss jede Zeile aus Tokens_Table gelöscht werden"; Oder müssen nur einige Token-Einträge gelöscht werden? Was ist mit einem Identitätsupdate (ein UPDATE wird ausgeführt, aber der param_value ändert sich von '60' zu '60')? Ist es wichtig, was die PKID in der Parameter_Tabelle ist? Kann es mehr als eine Zeile mit demselben Wert für param_name geben? –

Antwort

-1

Sie können versuchen, die folgende Syntax/Format:

DELIMITER $$ 
CREATE TRIGGER delete_tokens AFTER INSERT ON Parameters_Table 
FOR EACH ROW 
BEGIN 
    IF NEW.param_name = 'enterprise' THEN 
    BEGIN 
     DELETE FROM Tokens_Table WHERE pkid = NEW.pkid; 
    END; 
    END IF; 
END$$ 
+0

@ downvoter Pflege zu erklären? –

+0

Haben Sie Ihre Pflicht gemacht? –

+0

Auf den ersten Blick ist die Frage nach UPDATE-Anweisungen, nicht nach INSERT-Anweisungen. Es könnte rettbar sein, wenn Sie auch den UPDATE-Trigger hinzugefügt haben. –

1
DELIMITER $$ 
CREATE TRIGGER after_update AFTER UPDATE ON Parameters_Table 
FOR EACH ROW 
BEGIN 
    IF OLD.param_name ='Enterprise' THEN 
    IF NEW.param_value != OLD.param_value THEN 
     DELETE FROM Tokens_Table WHERE pkid = NEW.pkid; 
    END IF; 
    END IF; 
END$$ 

Probieren Sie oben code.Hope dieser Wille hilft.

+0

danke @sagar :) es hat funktioniert – Alberto

Verwandte Themen