数据库触发器 - 表中的最大项目

时间:2013-11-20 19:47:19

标签: mysql sql database triggers

所以我正在为网站创建一个数据库。在这个数据库中,有一个名为'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'是一个自动递增的主键。

鉴于所有这些信息,我有两个问题:

  1. 这个触发器是否符合我的想法?我不是数据库专家,我只想确保。
  2. 这是解决这个问题的最佳方法吗?有没有更好的方法来阻止表格超过25个项目?

1 个答案:

答案 0 :(得分:0)

你可以通过删除if和using

来简化触发器代码sql
DELETE FROM featured
WHERE featured_id IN
      (SELECT MIN(featured_id)
       FROM   featured
       HAVING COUNT(*)>24)

但对我来说看起来不错。