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.