mysql - 如何修复插入后触发计数时mysql代码中的错误

标签 mysql sql

我正在设置triggerafter_inser,但我不知道如何解决

DELIMITER $$
USE `solocloud_dev_2`$$

DROP TRIGGER IF EXISTS table_10_summary_after_insert $$

CREATE TRIGGER table_10_summary_after_insert AFTER INSERT ON table_10
   FOR EACH ROW BEGIN
   DECLARE var INT;
   SET var=0;

   SELECT COUNT(*) FROM table_10_summary WHERE client_id = new.client_id;

   IF var > 0
   THEN 
       UPDATE table_10_summary SET records = records+1 WHERE client_id = new.client_id;

    ELSE
        INSERT INTO table_10_summary (new.client_id,1);
END$$

DELIMITER$$

最佳答案

您的触发器存在几个问题:

  • 您需要从查询结果中SET var;就像现在一样,您没有设置此值

  • IF block 必须以 END IF 终止

以下代码编译成功 in this DB Fiddle :

DELIMITER $$

DROP TRIGGER IF EXISTS table_10_summary_after_insert $$

CREATE TRIGGER table_10_summary_after_insert AFTER INSERT ON table_10
FOR EACH ROW 
BEGIN
    DECLARE var INT;

    SET var = (SELECT COUNT(*) FROM table_10_summary WHERE client_id = new.client_id);
    IF (var > 0) THEN 
        UPDATE table_10_summary SET records = records + 1 WHERE client_id = new.client_id;
    ELSE
        INSERT INTO table_10_summary VALUES(new.client_id,1);
    END IF;

END$$

DELIMITER ;

关于mysql - 如何修复插入后触发计数时mysql代码中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54653371/

相关文章:

php - 为什么我的 4 个 PHP 输入中只有 1 个正确写入数据库?

java - SQLiteDatabase getWritableDatabase() { 抛出新的 RuntimeException ("Stub!"); }

sql - 根据条件计算

php - Laravel 打印最后执行的 SQL 查询和查询日志

java - 在 MySQL 中创建自定义结果集

mysql - 使用 DATE_FORMAT 的 MySQL View 的 Alembic 迁移脚本

MySQL 十进制空字符串/null (Meekrodb)

php - mysql按类更新表ajax

java - Eclipse 无法访问项目路径中的 mysql 连接器驱动程序

php - 学校网站的 MySQL 表