Can';不创建MySql触发器

Can';不创建MySql触发器,mysql,database-trigger,Mysql,Database Trigger,我是MySql触发器的新手。我有一个任务要创建检查插入值的触发器,但它在if语句中抛出了一个错误,我不知道如何解决它 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF new.price > @maxi THEN R

我是MySql触发器的新手。我有一个任务要创建检查插入值的触发器,但它在if语句中抛出了一个错误,我不知道如何解决它

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF  new.price > @maxi 
        THEN
            ROLLBACK
        else
            INSERT INTO Laptop
            SELECT * FROM inserted
 at line 1
代码:


更改了我的代码,一切正常

delimiter $$
CREATE TRIGGER ChekInsert BEFORE INSERT ON Laptop FOR EACH ROW
BEGIN
    declare maxi float;
    select MAX(price)*0.5 into maxi FROM Laptop;
        if NEW.price > @maxi then
            SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'price is incorrect';
        end if;

end $$

delimiter;

要在触发器中包含多个语句,您必须更改默认分隔符,并且不需要回滚,因为在抛出错误时它是触发器

始终使用
终止语句。并且触发器中的静默回滚会引起混乱(“为什么即使没有指示错误也没有插入行?”)。最好提出一个错误,不要在触发器中使用事务控制。
delimiter $$
CREATE TRIGGER ChekInsert BEFORE INSERT ON Laptop FOR EACH ROW
BEGIN
    declare maxi float;
    select MAX(price)*0.5 into maxi FROM Laptop;
        if NEW.price > @maxi then
            SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'price is incorrect';
        end if;

end $$

delimiter;