mysql - MaxRow触发器在mysql中不起作用

标签 mysql mysql-error-1064

我想编写一个触发器,如果​​插入新的数据库条目并且行数大于 3600 行,该触发器将删除最旧的数据库条目。不幸的是,第 7 行有一个错误(1064),但我不知道如何修复它。列时间如果使用mysql中的DATETIME定义。

CREATE TRIGGER maxRows BEFORE INSERT ON table1 
FOR EACH ROW
BEGIN
    IF ((SELECT COUNT(*) FROM table1) = 3600) THEN
        DELETE FROM table1
        ORDER BY time ASC
        LIMIT 1;
    END IF;    
END;

最佳答案

由于触发器中有一些 DML 语句,请尝试更改分隔符

DELIMITER $$

CREATE TRIGGER maxRows BEFORE INSERT ON table1 
FOR EACH ROW
BEGIN
    IF ((SELECT COUNT(*) FROM table1) = 3600) THEN
        DELETE FROM table1
        ORDER BY time ASC
        LIMIT 1;
    END IF;    
END;
END $$

DELIMITER ;

关于mysql - MaxRow触发器在mysql中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42820039/

相关文章:

php - 如何根据 Yii 框架中的匹配次数对 MySql 查询进行排序?

php - 使列具有与相似列相同的值

php - 如何通过ajax将json发送到php?

php - SQL 1064 错误 - 损坏的脚本

php - 如何让我的 PHP 更新功能发挥作用?

MySQL 和 HBase 连接

mysql - Group By 查询运行速度太慢而无法正常运行

mysql - 不与受信任的 SQL Server 连接 (MySQL) 关联

mySQL CASE 给出 Err 1064

MySQL 在存储过程中抛出一个错误 IF 函数