所以我正在为网站创建一个数据库。在这个数据库中,有一个名为'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'是一个自动递增的主键。
鉴于所有这些信息,我有两个问题:
答案 0 :(得分:0)
你可以通过删除if和using
来简化触发器代码sqlDELETE FROM featured
WHERE featured_id IN
(SELECT MIN(featured_id)
FROM featured
HAVING COUNT(*)>24)
但对我来说看起来不错。