gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:01:19 24 4
gpt4 key购买 nike

所以我正在为网站创建数据库。在这个数据库中,有一个名为“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 个?

最佳答案

您可以通过删除 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com