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 original- CREATE 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.