2012-11-24 45 views
0

我在使用mySQL觸發器時​​遇到了一些問題。替換觸發器激活的DELETE觸發器,但不是INSERT - mySQL

我有這樣的工作:

CREATE TRIGGER `insert_trigger` AFTER INSERT ON `table` 
FOR EACH ROW 
BEGIN 
IF (SELECT COUNT(*) FROM `table` WHERE userID = NEW.userID AND IP = new.IP) = 0 THEN 
    IF (SELECT COUNT(*) FROM `table` WHERE userID = NEW.userID) = 0 THEN 
     INSERT INTO `table2` VALUES(NEW.userID, (SELECT (COUNT(*)+1) FROM `table` WHERE userID = NEW.userID)); 
    ELSE 
     UPDATE `table2` SET views = views+1 WHERE table.userID = NEW.userID; 
    END IF; 
END IF; 
END// 
DELIMITER ; 

其中具有INSERT語句工作正常。

不過,我使用REPLACE這似乎只是叫我DELETE觸發

CREATE TRIGGER `delete_trigger` BEFORE DELETE ON `table` 
FOR EACH ROW 
BEGIN 
    IF (SELECT views FROM `table2` WHERE userID = OLD.userID) > 1 THEN 
     UPDATE `table2` SET views = views-1 WHEREuserID = OLD.userID; 
    END IF; 
END// 
DELIMITER ; 

當使用REPLACEDELETEINSERT觸發器應該叫。

我知道mySQL不支持多觸發器。

當另一個表有INSERT,DELETEREPLACE事件發生時,獲得相同結果(加/減視圖)的可能解決方案是什麼?

謝謝!

回答

2

問題在於我自己的觸發器。

REPLACE電話都刪除和插入,但這個IF語句

IF (SELECT COUNT(*) FROM `table` WHERE userID = NEW.userID AND IP = new.IP) = 0 THEN 

擋住插入。

謝謝。

+0

It's Smart answer,+1 –