0

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 ;

REPLACEとの両方を使用する場合はDELETEINSERTトリガーを呼び出す必要があります。

mySQL が複数のトリガーをサポートしていないことは承知しています。

別のテーブルに があり、イベントが発生しているときに、同じ結果 (ビューの追加/減算) を取得するための可能な解決策は何INSERTですか?DELETEREPLACE

4

1 に答える 1