Eu proponho gatilhos. Esta é a melhor maneira de assegurar que em cada inserção o tamanho máximo da tabela está sendo levado em consideração.
Possível duplicata de Como posso definir um número máximo de linhas na tabela MySQL?
A partir dessa resposta aceita:
Tente fazer uma restrição ao adicionar um novo registro a uma tabela. Gera um erro quando um novo registro for adicionado.
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 ;
Observe que a operação COUNT pode ser lenta em grandes tabelas InnoDb.
No MySQL 5.5 você pode usar a instrução SIGNAL para gerar um erro.