Jag föreslår triggers. Detta är det bästa sättet att försäkra sig om att den maximala bordsstorleken beaktas vid varje insats.
Möjlig dubblett av Hur kan jag ställa in ett maximalt antal rader i MySQL-tabellen?
Från det accepterade svaret:
Försök att göra en begränsning för att lägga till en ny post i en tabell. Visa ett felmeddelande när en ny post ska läggas till.
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 ;
Observera att COUNT operation kan vara långsam på stora InnoDb-tabeller.
På MySQL 5.5 kan du använda SIGNAL-satsen för att skapa ett fel.