mysql - 如何计算mysql触发器内的两个变量?

标签 mysql sql triggers mariadb

我有一个触发器,在他内部我声明了两个变量:数量和价格。数量为 INT 类型,价格为 DECIMAL(10,2) 类型。这些变量的值由 SELECT 查询设置。这效果很好。现在我想将这两个变量相乘,这样我就可以获得总数。

总金额=数量*价格

简化的代码(在这里不起作用只是为了更好地描述我的问题):

DROP TRIGGER calculate;
DELIMITER $$
CREATE TRIGGER calculate 
    AFTER INSERT ON order_table
    FOR EACH ROW 
        BEGIN
        DECLARE quantity INT;
        DECLARE price INT;

        SELECT quantity, price INTO @quantity, @price FROM product;

        INSERT INTO order_details SET total_amount = @quantity * @price;

        END$$
DELIMITER ;

使用此代码,我得到的结果为 null。 我正在使用 MySQL/MariaDB。

最佳答案

我找到了简单的解决方案:

DROP TRIGGER calculate;
DELIMITER $$
CREATE TRIGGER calculate 
    AFTER INSERT ON order_table
    FOR EACH ROW 
        BEGIN
        DECLARE totalAmount DECIMAL(10,2);

        SELECT (quantity * price) INTO @totalAmount FROM product;

        INSERT INTO order_details SET total_amount = @totalAmount;

        END$$
DELIMITER ;

关于mysql - 如何计算mysql触发器内的两个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022975/

相关文章:

mysql - 使用触发器对表执行插入或更新

mysql - 计算 SQL 中的空字段或 null 字段

MySQL 大圆路口(两条路交叉吗?)

php: 使用 JSON 查询时间戳表

mysql - 查询获取Mysql中特定单元格的值

MySQL SUM、JOIN 和 GROUP BY...正确的结构

mysql - 我应该使用 SQL 还是 Ruby 处理大量数据?

mysql - "from"在这个位置无效,期待: EOF, ";"

php - MySQL创建触发器将内容插入同一数据库中的另一个表中

database - 如何修复程序结束触发器错误