Ich habe diese Tabellen:Wie ermittelt man, welche Spalte aktualisiert wird?
// users
+----+--------+--------------+------------+---------------------------+
| id | name | phone | postalcode | email |
+----+--------+--------------+------------+---------------------------+
| 1 | john | 0338294214 | 65462345 | [email protected] |
| 2 | jack | 0657359930 | 93827424 | [email protected] |
| 3 | peter | 0083247242 | 99849422 | [email protected] |
+----+--------+--------------+------------+---------------------------+
// notifications
+----+---------+---------------+------------+
| id | user_id | content | timestamp |
+----+---------+---------------+------------+
| 1 | 2 | phone updated | 1452642595 |
+----+---------+---------------+------------+
Auch habe ich diesen Trigger AFTER UPDATE auf users
Tisch ::
DELIMITER //
CREATE TRIGGER `send_notification` AFTER UPDATE ON `users`
FOR EACH ROW BEGIN
INSERT INTO notification(user_id, content, timestamp)
values(new.id, "phone updated", UNIX_TIMESTAMP())
END
//
DELIMITER
Alles, was ich, dass Trigger zu tun bin versucht, ausgeführt wird, gerade als phone
Spalte Aktualisierung. (nicht wenn name
oder postalcode
oder email
Update). Wie kann ich diesen Zustand definieren?
Scheint korrekt .. danke .. upvote – stack
Ein kleines Problem, '<=>' bedeutet * nicht gleich *. Also, was ist das NICHT? Ich denke du musst sagen: * Wenn alt und der erste Wert von 'phone' Spalte nicht gleich sind dann" phone changed ". * Also glaube ich, dass du das' NOT' entfernen musst. – stack
@stack: ** '<=>' ** bedeutet ... "NULL-safe equal. Dieser Operator führt einen Gleichheitsvergleich wie der Operator = durch, gibt aber 1 statt NULL zurück, wenn beide Operanden NULL sind, und 0 statt NULL if ein Operand ist NULL. " Referenz: [http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_equal-to](http://dev.mysql.com/doc/refman/5.7/en/ Vergleichsoperatoren.html # operator_equal-to) – spencer7593