0

我创建了一个 MySQL 触发器,旨在每次添加新记录时清除最旧的记录:

CREATE DEFINER =  `root`@`localhost` TRIGGER `cleanRecords` BEFORE INSERT ON  `Records` 
FOR EACH
ROW BEGIN 
SELECT COUNT( * ) 
INTO @cnt 
FROM cla.Records;

IF @cnt >=1000 THEN DELETE FROM cla.Records ORDER BY createdDate DESC LIMIT 1 ;

END IF ;

END

期望保持 1000 条最新记录不被连续操作。该操作已确认可以正常工作,但此触发器不是。我误解了触发器还是这个只是写错了?

4

1 回答 1

1

这里

触发器可以访问自己表中的旧数据和新数据。触发器也可以影响其他表,但不允许修改已被调用函数或触发器的语句使用(用于读取或写入)的表。

因此,您不能删除激活触发器的表中的行。

您可能应该在您的应用程序中处理它或使用不时清理表的进程

于 2013-11-13T23:04:29.007 回答