Ich suche nach Hilfe mit einer SQL-Abfrage mit einer IF-THEN-ELSE-Konstruktion. Es dreht sich um den Automatismus in meiner Anwendung nach einer Einfügung einer neuen Zeile in eine "Dump" -Tabelle - abhängig von dem Wert einer Spalte - in eine spezielle Tabelle zu kopieren.CASE-WHEN-THEN-ELSE Konstruieren in SQL
Um sich zu trainieren, habe ich einen Test mit einem DB-Tabelle prob und ein Tisch prob2
Der Auslösemechanismus unter Kontrolle ist. Jetzt kommt es immer noch an, was mit dieser speziellen Regel zu tun ist. Dies ist abhängig vom Wert von „c“
In Worten das ist, was ich will:
IF (the value in column c of the prob-table - from the row with the highest ID of the prob table = 2)
THEN (Now, copy this line to the prob2 table)
END IF
diese Weise, die ich für jeden Wert von „c“ kann ausführen eine andere Aktion in einem IF-THEN - ELSEIF - DANN - ELSEIF - DANN - ENDE IF Konstruktion.
Tabelle prob:
- id | a | b | c |
- ----+---------------+---+---+
- 1 |std745_900w | 5 | 4 |
- ----+---------------+---+---+
- 2 |std745_900w | 2 | 3 |
- ----+---------------+---+---+
- 3 |std745_900w | 1 | 9 |
- ----+---------------+---+---+
- 4 |std745_900w | 3 | 2 |
- ----+---------------+---+---+
Meine Übersetzung in eine (nicht funktionsfähig) SQL Query
IF
(SELECT c FROM prob WHERE id = (SELECT MAX(id) FROM prob) = 2)
THEN
(INSERT INTO prob2 (id, a, b, c)
SELECT id, a, b, c FROM prob WHERE id = (SELECT MAX(id) FROM prob))
END IF
die Abfrage nach dem IF in Klammern) ->SELECT c FROM prob WHERE id = (SELECT MAX(id) FROM prob)
< - arbeitet oke und Ergebnisse in "2" Die Abfrage nach dem THEN ->INSERT INTO prob2 (id, a, b, c) SELECT id, a, b, c FROM prob WHERE id = (SELECT MAX(id) FROM prob)
< - funktioniert gut SQL, versteht jedoch nicht den Ausdruck der "IF-Anweisung".
Dies ist mysql auf einem MariaDB
Kann jemand helfen?
Sie sagen, Sie haben einen Insert-Trigger für die Tabelle prob und Sie möchten diese Logik in diesen Trigger einbeziehen? –
In MySQL ein if ... then - else ... end if-Anweisung kann nur in gespeicherten Programmen (Prozedur, Funktion, Trigger) verwendet werden, Sie können es nicht ausführen wie es ist. Das Abrufen von Daten aus der Datenbank unterscheidet sich ebenfalls geringfügig. – Shadow
Ja, in MariaDB können Sie einen Trigger nach einem Einfügen in eine Tabelle definieren. Dies löst eine SQL-Abfrage aus. Ich habe es mit einer einfachen Abfrage getestet und das funktioniert. Mein Problem liegt im Test im IF-Teil des it-then-else-Konstrukts –