所以我正在为网站创建数据库。在这个数据库中,有一个名为“featured”的表。我需要确保在任何给定时间该表中最多有 25 个项目。为了实现这个目标,我创建了一个触发器:
DELIMITER $$
CREATE TRIGGER featured_check AFTER INSERT ON featured
FOR EACH ROW
BEGIN
IF (SELECT COUNT(*) FROM featured) > 25 THEN
DELETE FROM featured ORDER BY featured_id LIMIT 1;
END IF;
END$$
DELIMITER ;
每次将项目插入特色表时,都应激活此触发器。它将计算表中的项目数,如果计数超过 25,则会删除 id 最小的项目。在这种情况下,“featured_id”是一个自动递增的主键。
鉴于所有这些信息,我有两个问题:
- 此触发器是否按照我的想法执行操作?我不是数据库专家,我只是想确定一下。
- 这是解决此问题的最佳方法吗?有没有更好的方法来防止表中的项目超过 25 个?
最佳答案
您可以通过删除 if 并使用来简化触发代码 sql
DELETE FROM featured
WHERE featured_id IN
(SELECT MIN(featured_id)
FROM featured
HAVING COUNT(*)>24)
但其他方面对我来说看起来还不错。
关于mysql - 数据库触发器 - 表中的最大项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20105510/