Mysql
 sql >> Base de données >  >> RDS >> Mysql

Limiter la table mysql à une taille définie et supprimer automatiquement les entrées les plus anciennes

Je propose des déclencheurs. C'est le meilleur moyen de s'assurer qu'à chaque insertion la taille maximale du tableau est prise en compte.

Possibilité de doublon de Comment puis-je définir un nombre maximum de lignes dans la table MySQL ?

De cette réponse acceptée :

Essayez de restreindre l'ajout d'un nouvel enregistrement à une table. Génère une erreur lorsqu'un nouvel enregistrement va être ajouté.

DELIMITER $$

CREATE TRIGGER trigger1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
  SELECT COUNT(*) INTO @cnt FROM table1;
  IF @cnt >= 25 THEN
    CALL sth(); -- raise an error
  END IF;
END
$$

DELIMITER ;

Notez que cette opération COUNT peut être lente sur les grandes tables InnoDb.

Sur MySQL 5.5, vous pouvez utiliser l'instruction SIGNAL pour déclencher une erreur.