sql >> Database teknologi >  >> RDS >> Mysql

Begrænsning af mysql-tabel til en sertain-størrelse og automatisk sletning af ældste poster

Jeg foreslår udløsere. Dette er den bedste måde at sikre, at der ved hver indsats tages højde for den maksimale bordstørrelse.

Muligt duplikat af Hvordan kan jeg indstille et maksimalt antal rækker i MySQL-tabellen?

Fra det accepterede svar:

Prøv at lave en begrænsning for at tilføje en ny post til en tabel. Rejs en fejl, når en ny rekord skal tilføjes.

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 ;

Bemærk, at COUNT operation kan være langsom på store InnoDb-tabeller.

På MySQL 5.5 kan du bruge SIGNAL-sætning til at rejse en fejl.




  1. SqlAlchemy:få indsat id'et for den sidste post

  2. MySQL InnoDB frigiver ikke diskplads efter sletning af datarækker fra tabellen

  3. Hvordan konverterer man en streng til dato i MySQL?

  4. Returner et JSON-objekt ved hjælp af PHP json_encode() &MySQL for at videregive til jQuery-funktionen