问题
delimiter //
CREATE TRIGGER `range` BEFORE INSERT ON touristCompany.hotels
FOR EACH ROW
BEGIN
IF NEW.star >5 THEN
SET NEW.star = 5;
ELSEIF NEW.star < 1 THEN
SET NEW.star = 1;
END IF;
END;//
delimiter ;
回答1:
You need to create the trigger within the same schema/database where the insert operation is happening. From your trigger definition it's obvious that trigger operation will be under touristCompany
database. Make sure you are creating the trigger under same database.
Modify your trigger definition like below
delimiter //
CREATE TRIGGER `touristCompany`.`range`
BEFORE INSERT ON `touristCompany`.`hotels`
FOR EACH ROW
BEGIN
IF NEW.star > 5 THEN
SET NEW.star = 5;
ELSEIF NEW.star < 1 THEN
SET NEW.star = 1;
END IF;
END;//
delimiter ;
(OR) Select the database before creating trigger
USE `touristCompany`;
delimiter //
CREATE TRIGGER `range` ...
<rest of code here>
来源:https://stackoverflow.com/questions/26735010/mysql-trigger-in-wrong-schema