mysql - 无法在触发器中设置变量

标签 mysql triggers phpmyadmin declaration

我正在尝试在触发器中设置一个变量,该变量是表中的最新条目。但是,PHPMyAdmin 注意到 SET clicked_campaign_id = 行存在错误。我没有看到这里的问题。

CREATE TRIGGER tr_user_action_click 
AFTER INSERT ON users_click FOR EACH ROW
BEGIN
    DECLARE clicked_campaign_id int

    SET clicked_campaign_id = 
    (SELECT campaignId 
    FROM users_click 
    WHERE id = (SELECT max(id) FROM users_click));

    Update onlineportal.`campaigns`
    SET `clicks` = `clicks` + 1
    WHERE id = clicked_campaign_id;
END

是否有不同的方法来设置变量...?

最佳答案

您必须在phpMyAdmin中设置DELIMITER,如图所示:

enter image description here

然后,创建触发器:

CREATE TRIGGER `tr_user_action_click` AFTER INSERT ON `users_click`
FOR EACH ROW
BEGIN
    DECLARE `clicked_campaign_id` INT;

    SET `clicked_campaign_id` = 
    (SELECT `campaignId` 
    FROM `users_click`
    WHERE `id` = (SELECT max(`id`) FROM `users_click`));

    UPDATE `onlineportal`.`campaigns`
    SET `clicks` = `clicks` + 1
    WHERE `id` = `clicked_campaign_id`;
END//

关于mysql - 无法在触发器中设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25880232/

相关文章:

php - 发布数据中的印地语字体未保存

mysql - SQL查询从一个表中获取数据,其中特定列等于其他表中的值

mysql - SQL 按首选值列表分组

Oracle:根据角色更改架构

mysql - 如何运行查询以用通配符变量替换文本?

mysql - 插入后触发更新另一表中的一条记录

php - MySQL 不会用 php 更新数据库数据

MySQL update table set count = count +1 并发问题

mysql - 错误 : #1436 - Thread stack overrun with MySQL trigger

google-apps-script - 使用 onSelectionChange 时我做错了什么