So habe ich zwei Tabellen wie diese ...
MySQL-Trigger auf Insert/Update Ereignisse
ext_words
-------------
| id | word |
-------------
| 1 | this |
-------------
| 2 | that |
-------------
| 3 | this |
-------------
ext_words_count
---------------------
| id | word | count |
---------------------
| 1 | this | 2 |
---------------------
| 2 | that | 1 |
---------------------
Ich versuche, einen Auslöser zu schaffen, wird:
- Update
ext_words_count.count
wennext_words.word
aktualisiert .
Um die Sache noch komplizierter zu machen,
- wenn
ext_words.word
nicht inext_words_count
existiert, wennext_words
aktualisiert wird, würde ich es inext_words_count
und ich
count
als 1 gesetzt einfügen möchten haben sich ähnliche Fragen angeschaut:
1. Before/after insert trigger using auto increment field und
2. Using Trigger to update table in another database
versuchen, den 2. Hier zu kombinieren ist, was ich habe, so weit:
DELIMITER $$
CREATE TRIGGER update_count
AFTER UPDATE ON ext_words
FOR EACH ROW
BEGIN
UPDATE ext_words_count
SET word_count = word_count + 1
WHERE word = NEW.word;
END;
$$
DELIMITER ;
Jede Beratung und Richtung wird sehr geschätzt. Oder vielleicht eine andere Methode, die ich übersehen habe und wie immer Danke im Voraus!
UPDATE:
I für die Verwendung von 2 Trigger entschieden haben, eine für INSERT und eine für UPDATE, weil ich mit bedingten Anweisungen in MySQL nicht so vertraut bin.
DELIMITER $$
CREATE TRIGGER insert_word AFTER INSERT ON ext_words
FOR EACH ROW
BEGIN
INSERT IGNORE INTO ext_words_count (word) VALUES (NEW.word);
END;
$$
DELIMITER ;
und
DELIMITER $$
CREATE TRIGGER update_word AFTER UPDATE ON ext_words
FOR EACH ROW
BEGIN
UPDATE ext_words_count
SET word_count = word_count + 1
WHERE word = NEW.word;
END;
$$
DELIMITER ;
Die INSERT-Abfrage funktioniert großartig, aber die UPDATE-Abfrage ist die Aktualisierung nicht word_count
. Gibt es etwas, das ich in der Update-Abfrage verpasst habe ..?
Sie mögen dies, [MySQL Feuer sehen Trigger für sowohl Einfügen als auch Aktualisieren] (http://stackoverflow.com/questions/1318224/mysql-fire-trigger-for-both-insert-and-update) Hat meine Lösung funktioniert? Was für ein Ergebnis möchte ich verbessern? Denken Sie daran, dass Sie die gleiche Tabelle nicht aktualisieren können, auf der Sie Trigger in MySQL aufrufen –
@GrijeshChauhan - Danke für den Link! Ich bin nicht in der Lage, Ihre Antwort zu erhalten, aber das liegt daran, dass ich in bedingungslosen Aussagen in MySQL neu bin, nicht wegen Ihrer Lösung. – Drewness
Ich meine, wenn ext_words aktualisiert wird, wenn das Wort nicht in ext_words_count ist, dann möchte ich es einfügen und die Zählung 1 machen. Andernfalls, wenn das Wort in ext_words_count ist, erhöhen Sie die Anzahl um 1 ... – Drewness