我正在尝试在现有的MySQL数据库中创建一个触发器。我想要创建的触发器很简单
DELIMITER $$
CREATE TRIGGER `prmadd02_cecsproject`.`prmadd02_room_checkNumberOfBeds`
BEFORE INSERT ON `prmadd02_room`
FOR EACH ROW
BEGIN
IF NEW.number-beds < 1 OR NEW.number-beds > 3
THEN
SET @s0 = 'Number of Beds must be between 1 and 3!';
SIGNAL SQLSTATE '45000' SET message_text = @s0;
END IF;
END
$$
DELIMITER ;
但是当我尝试执行此代码时,我收到以下错误:
Error Code: 1054. Unknown column 'number' in 'NEW'
在有人要求之前,我不能改变列名。
对此的任何帮助将不胜感激。
答案 0 :(得分:0)
只需将反引号添加到列名称:
DELIMITER $$
CREATE TRIGGER `prmadd02_cecsproject`.`prmadd02_room_checkNumberOfBeds`
BEFORE INSERT ON `prmadd02_room`
FOR EACH ROW
BEGIN
IF NEW.`number-beds` < 1 OR NEW.`number-beds` > 3
THEN
SET @s0 = 'Number of Beds must be between 1 and 3!';
SIGNAL SQLSTATE '45000' SET message_text = @s0;
END IF;
END
$$
DELIMITER;
使用这些字符命名数据库列不是一个好习惯,因为当您运行它时,数据库会认为您正在执行操作,因此您必须使用ESCAPE来使用它。反击是你如何做到的。