Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Begrenzung der MySQL-Tabelle auf eine bestimmte Größe und automatisches Löschen der ältesten Einträge

Ich schlage Trigger vor. Dies ist der beste Weg, um sicherzustellen, dass bei jeder Einfügung die maximale Tabellengröße berücksichtigt wird.

Mögliches Duplikat von Wie kann ich eine maximale Anzahl von Zeilen in einer MySQL-Tabelle festlegen?

Aus dieser akzeptierten Antwort:

Versuchen Sie, das Hinzufügen eines neuen Datensatzes zu einer Tabelle einzuschränken. Löst einen Fehler aus, wenn ein neuer Datensatz hinzugefügt wird.

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 ;

Beachten Sie, dass die COUNT-Operation bei großen InnoDb-Tabellen langsam sein kann.

Unter MySQL 5.5 können Sie die SIGNAL-Anweisung verwenden, um einen Fehler auszulösen.