使用 MySQL 在列名中使用连字符/破折号创建触发器

保罗·马多克斯

我正在尝试在现有的 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'

在有人问之前,不,我不能更改列名。

对此的任何帮助将不胜感激。

豪尔赫·坎波斯

只需在列名中添加反引号:

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;

用这些字符命名数据库列不是一个好习惯,因为当你运行它时,数据库认为你正在执行一个操作,所以你必须转义它才能使用它。反引号是你如何做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在mysql表名中使用(-)破折号

使用破折号的MySQL字符串匹配

在MySQL中使用条件触发器

在python存储库名称和包名称中使用连字符/破折号

Symfony 3路由允许在占位符值中使用连字符/破折号

DataFormatConversion.InvalidSchema 在 AWS Glue 和 Firehose 中使用连字符/破折号

如何在翻新中使用破折号/连字符处理JSON密钥?

使用连接器/ Python创建触发器-MySQL

如何在MySQL中使用更新/插入为删除之前/之后创建触发器?

MySQL:无法在触发器中使用SIGNAL

如何在MYSQL触发器中使用IF语句?

在插入触发器之前在 MYSQL 中使用 IF 语句删除“The”

在单列上使用 IF THEN ELSE 条件创建 MySQL 触发器

使用Liquibase在mysql中创建触发器

MySQL使用DELIMITER $$创建触发器语法错误

无法使用多个表创建 MySQL 触发器

如果在javascript .replace中使用,如何在RegEx中定位破折号或连字符?

使用MySQL触发器的优缺点

使用mysql触发器自动插入

在printf中使用破折号

使用lodash _.words时如何不分隔破折号/连字符?

C-shell:foreach ls无法使用破折号/连字符(-)检测文件名

由于使用 Pandas 在 python 中使用长破折号/连字符从 excel 读取数据时,数据过滤器失败

如何使用ffmpeg破折号混合器创建多比特率破折号内容

在MySQL INSERT触发器中使用IF语句时出现问题

MySQL 在触发器中使用 min 和 limit 优化查询

如何在游标中使用NEW值(在插入触发器MySQL之后)

MySQL触发器不能在UPDATE语句中使用相同的表

如何在MyBatis插入中使用Mysql触发器生成的值填充对象属性