mysql - 简单的触发抛出错误并停止执行

标签 mysql sql

我在 MySQL 中有这个触发器

DROP TRIGGER IF EXISTS BeforeGivingRight;
DELIMITER $$
CREATE TRIGGER BeforeGivingRight
BEFORE INSERT ON right_code 
FOR EACH ROW
BEGIN
    DECLARE num_rows INT NULL;
    SELECT count(right_code) FROM valid_rights WHERE right_code  =
                                            new.user_right.right INTO num_rows;
    
    IF num_rows = 0
    THEN
        set msg = concat('Error: That right is not allowed!',
                                      cast(new.user_right.right as char));
        signal sqlstate '45000' set message_text = msg;
    END IF;
END $$
DELIMITER ;

它给了我这个错误

#1064 - 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 'NULL; SELECT
    count(right_code) FROM valid_rights WHERE right_code  = new.user_' at line 5 

这里出了什么问题?我想做的是,在插入某些权限(例如 201)之前,使用触发器检查 valid_rights 是否存在。

最佳答案

您错过了关键字DEFAULT。使用 0 而不是 NULL

DECLARE total_sale INT DEFAULT 0;

<强> See HERE: Variables in Stored Procedures

关于mysql - 简单的触发抛出错误并停止执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12723225/

相关文章:

php - Nifty 指数价格的 20 周期移动平均线计算

sql - Oracle Sql 如果存在则做这个否则做那个

mysql - 对于员工表中的每个员工,查找层次结构中直接和间接老板的数量

mysql - 如何安排MySQL数据库跟踪关联到多个主键的用户?

MySQL 选择一对多

mysql - 服务 mysql 启动在我的日志文件中留下 "privilege tables: Table ' mysql.user' 不存在“并且服务器失败

php - 检索搜索结果 | PHP 和 SQL

用于包含 ID 列上所有内容的 SQL 参数

mysql - 选择多部分(多仓库)订单时出现问题

mysql - 仅当具有相同值的所有其他条目都存在并匹配时,如何选择列的值? (MySQL)