Così ho due tabelle come questo ...
MySQL Trigger su eventi di inserimento/aggiornamento
ext_words
-------------
| id | word |
-------------
| 1 | this |
-------------
| 2 | that |
-------------
| 3 | this |
-------------
ext_words_count
---------------------
| id | word | count |
---------------------
| 1 | this | 2 |
---------------------
| 2 | that | 1 |
---------------------
Sto cercando di creare un trigger che verrà:
- aggiornamento
ext_words_count.count
quandoext_words.word
è aggiornato .
A complicare ulteriormente le cose,
- se
ext_words.word
non esiste inext_words_count
quandoext_words
è aggiornato, mi piacerebbe inserirlo nelext_words_count
e impostarecount
come 1.
I ho visto domande simili:
1. Before/after insert trigger using auto increment field e
2. Using Trigger to update table in another database
cercando di coniugare l'2. Ecco quello che ho finora:
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 ;
Qualche consiglio e la direzione è molto apprezzato. O forse un altro metodo che ho trascurato e come sempre grazie in anticipo!
UPDATE:
ho optato per l'utilizzo di 2 trigger, uno per INSERT e uno per UPDATE perché io non sono che la familiarità con istruzioni condizionali in MySQL.
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 ;
e
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 ;
La query INSERT sta lavorando molto, però la query di aggiornamento non viene aggiornato word_count
. C'è qualcosa che ho perso nella query di aggiornamento ..?
come si può vedere questo, [MySQL Fuoco Trigger sia per Insert che per Update] (http://stackoverflow.com/questions/1318224/mysql-fire-trigger-for-both-insert-and-update) La mia soluzione ha funzionato? Qual è stato il risultato che vorrei migliorare. Ricorda che non è possibile aggiornare la stessa tabella su cui si chiama trigger in MySQL –
@GrijeshChauhan - Grazie per il collegamento! Non sono in grado di far funzionare la tua risposta, ma è perché sono nuovo alle dichiarazioni condizionali in MySQL, non a causa della tua soluzione. – Drewness
Voglio dire che quando ext_words è aggiornato, se la parola non è in ext_words_count allora voglio inserirla e fare il conteggio 1. Altrimenti se la parola è in ext_words_count, aumenta il conteggio di 1 ... – Drewness