En Oracle recuerdo que alguna vez condicione inserts mediante triggers.
 
He encontra esto en este enlace:
[URL="http://forums.mysql.com/read.php?99,172748,235353#msg-235353"]http://forums.mysql.com/read.php?99,172748,235353#msg-235353[/URL]    
Código SQL:
Ver originalCREATE TRIGGER myTrigger BEFORE INSERT ON myTable 
FOR EACH ROW BEGIN 
IF CHECK=TRUE THEN 
//its ok 
ELSE 
SET NEW = NULL; //raise error AND cancel INSERT 
END IF; 
END;
  
Supongo que en lugar de ese "check=true" pones un "(select count(*) from tabla)<[Limite de registros]" y conseguís que funcione. 
O talvez haga falta declarar una variable y meter el resultado del count en ella primero. 
Prueba y me cuentas.