Vì vậy, tôi có hai bảng như thế này ...
MySQL kích hoạt On Insert/Cập nhật các sự kiện
ext_words
-------------
| id | word |
-------------
| 1 | this |
-------------
| 2 | that |
-------------
| 3 | this |
-------------
ext_words_count
---------------------
| id | word | count |
---------------------
| 1 | this | 2 |
---------------------
| 2 | that | 1 |
---------------------
tôi đang cố gắng để tạo ra một kích hoạt mà sẽ:
- cập nhật
ext_words_count.count
khiext_words.word
được cập nhật .
Để làm phức tạp thêm vấn đề,
- nếu
ext_words.word
không tồn tại trongext_words_count
khiext_words
được cập nhật, tôi muốn chèn nó vàoext_words_count
và thiết lậpcount
như 1.
tôi đã xem xét các câu hỏi tương tự:
1. Before/after insert trigger using auto increment field và
2. Using Trigger to update table in another database
cố gắng để kết hợp 2. Dưới đây là những gì tôi có cho đến nay:
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 ;
Bất cứ lời khuyên và hướng được đánh giá rất nhiều. Hoặc có thể là một phương pháp khác mà tôi đã bỏ qua và luôn cảm ơn trước!
UPDATE:
tôi đã chọn cho việc sử dụng 2 trigger, một cho INSERT và một cho UPDATE bởi vì tôi không phải là quen thuộc với câu điều kiện trong 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 ;
và
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 ;
Các truy vấn INSERT đang làm việc rất tốt, tuy nhiên truy vấn UPDATE không cập nhật word_count
. Có cái gì tôi bị mất trong truy vấn cập nhật ..?
Bạn có thể muốn xem này, [MySQL cháy Trình kích hoạt cho cả Chèn và Cập nhật] (http://stackoverflow.com/questions/1318224/mysql-fire-trigger-for-both-insert-and-update) Giải pháp của tôi có hoạt động không? Kết quả tôi muốn cải thiện là gì. Hãy nhớ rằng bạn không thể cập nhật cùng một bảng mà bạn gọi kích hoạt trong MySQL –
@GrijeshChauhan - Cảm ơn bạn đã liên kết! Tôi không thể có được câu trả lời của bạn làm việc, nhưng đó là bởi vì tôi mới vào các câu lệnh có điều kiện trong MySQL, không phải vì giải pháp của bạn. – Drewness
Tôi có nghĩa là khi ext_words được cập nhật, nếu từ đó không nằm trong ext_words_count thì tôi muốn chèn nó và tạo số đếm 1. Nếu không, nếu từ này nằm trong ext_words_count, hãy tăng số đếm lên 1 ... – Drewness