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

Limitare la tabella mysql a una determinata dimensione ed eliminare automaticamente le voci più vecchie

Propongo trigger. Questo è il modo migliore per assicurarsi che ad ogni inserto venga presa in considerazione la dimensione massima della tabella.

Possibile duplicato di Come posso impostare un numero massimo di righe nella tabella MySQL?

Da quella risposta accettata:

Prova a limitare l'aggiunta di un nuovo record a una tabella. Genera un errore quando verrà aggiunto un nuovo record.

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 ;

Nota che l'operazione COUNT potrebbe essere lenta su grandi tabelle InnoDb.

Su MySQL 5.5 puoi usare l'istruzione SIGNAL per generare un errore.