簡體   English   中英

這個簡單的MySQL觸發器的語法有什么問題?

[英]What's wrong with the syntax of this simple MySQL trigger?

DELIMITER $$

CREATE TRIGGER ad_user AFTER DELETE

ON `user`
FOR EACH ROW BEGIN
    DECLARE max_id INT;
    DECLARE new_id INT;

    SELECT MAX(`id`) INTO max_id FROM `user`;
    IF max_id = NULL THEN
        SET max_id = 0;
    END IF

    SELECT `new_id` INTO new_id FROM `conf` WHERE `table` = 'user';

    IF max_id < new_id THEN
        UPDATE `conf` SET `new_id` = max_id WHERE `table` = 'user';
    END IF
END$$

創建此觸發器時,出現以下錯誤提示:

錯誤代碼:1064您的SQL語法錯誤; 檢查與您的MySQL服務器版本相對應的手冊,以在'SELECT new_id INTO new_id FROM conf WHERE table ='fact'附近使用正確的語法; 如果在第12行的max_id <new_id THEN'

有人可以幫助我嗎? 提前致謝!

嘗試像這樣編寫查詢:

DELIMITER $$

CREATE TRIGGER ad_user AFTER DELETE
ON `user`
FOR EACH ROW BEGIN
    DECLARE v_max_id INT;
    DECLARE v_new_id INT;

    SELECT MAX(`id`) INTO v_max_id FROM `user`;
    IF v_max_id IS NULL THEN
        SET v_max_id = 0;
    END IF;

    SELECT `new_id` INTO v_new_id FROM `conf` WHERE `table` = 'user';

    IF v_max_id < v_new_id THEN
        UPDATE conf c
            SET c.new_id = v_max_id
            WHERE c.`table` = 'user';
    END IF;
END$$

這主要是添加分號並修復= NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM