ich eine Tabelle wie folgt aus:Wie zu analysieren, was passiert während der Aktualisierung Zeilen
| id | address | name | oid | state | event_id | ctrl |
-------------------------------------------------------------------
| 1 | test_addr_1 | test_1 | 25.345.17 | 1 | 0 | 15 |
Ich brauche in Reihe zu bekommen event_id während Aktualisierungsdaten.
mag ich so etwas wie dies zu tun:
Wenn neuer Name entspricht nicht mit alten Namen event_id = event_id + 1
Wenn neue oid nicht mit alten oid gleich event_id = event_id + 2
Wenn neuer Zustand nicht mit altem Zustand entspricht event_id = event_id + 4
Wenn neue Abfrage größer dann alt ctrl event_id = event_id + 8
# Params to procedure
PROCEDURE Write(IN pAddr VARCHAR(20), IN pName VARCHAR(20), IN pOid VARCHAR(20), IN pState TINYINT, IN pCtrl INT)
#procedure body
SET @ev = 0;
SELECT
CASE
WHEN name != pName THEN SET @ev = @ev + 1
WHEN oid != pOid THEN SET @ev = @ev + 2
WHEN state != pState THEN SET @ev = @ev + 4
WHEN ctrl > pCtrl THEN SET @ev = @ev + 8
END
FROM table1
UPDATE table1 SET ..... , event_id = @ev WHERE address = pAddr
Wie kann ich es tun? Oder wird es besser sein, es nicht mit Hilfe von SQL zu machen?
Es klingt für mich wie ein Trigger nach dem Update wäre eine bessere Wahl hier. Übrigens, können Sie sicher sein, dass mehrere Ihrer Bedingungen nicht gleichzeitig ausgelöst werden? –