Proponuję wyzwalacze. Jest to najlepszy sposób na zapewnienie, że przy każdym wstawieniu zostanie uwzględniony maksymalny rozmiar tabeli.
Możliwy duplikat z Jak mogę ustawić maksymalną liczbę wierszy w tabeli MySQL?
Z tej zaakceptowanej odpowiedzi:
Spróbuj wprowadzić ograniczenie dotyczące dodawania nowego rekordu do tabeli. Zgłoś błąd, gdy zostanie dodany nowy rekord.
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 ;
Pamiętaj, że operacja COUNT może być powolna na dużych tabelach InnoDb.
W MySQL 5.5 możesz użyć instrukcji SIGNAL, aby zgłosić błąd.