我是 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
代码:
CREATE TRIGGER ChekInsert BEFORE INSERT ON Laptop FOR EACH ROW
BEGIN
SELECT @maxi := MAX(price)*0.5 FROM Laptop
IF new.price > @maxi
THEN
ROLLBACK
else
INSERT INTO Laptop
SELECT * FROM inserted
end if
END
最佳答案
更改了我的代码,一切正常
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;
要在触发器中包含多个语句,您必须更改默认分隔符,并且不需要回滚,因为它是在抛出错误时触发的
关于mysql - 无法创建 MySql 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59505485/