Em vez de um gatilho, você pode escrever sua própria consulta simples para verificar as "restrições" antes de inserir. Tentar:
INSERT INTO member_infos
SELECT 1, 'Timothy', 'secret', '[email protected]', 5, 0
FROM dual
WHERE (SELECT COUNT(*) FROM member_infos WHERE Type_ID = 5)
<
(SELECT Member_Limit FROM member_types WHERE ID = 5)
Eu costumava verificar no caso de
Type_ID
=5. Isso ignora se o critério de contagem não for atendido e insere apenas se a contagem de membros de entradas em member_info com tipo id =5 for menor que o limite definido em seu member_types
tabela