Vamos a hacer un intento, a ver si funciona:
En teoría debería poder hacer el DELETE siendo tablas MyISAM. No funciona bien con las InnoDB porque MySQL no lee previamene la cadena de dependencias.
A mi no me gusta la forma porque si falla uno de los borrados de las tablas no hay rollback.
Un ejemplo de mi idea respecto al SP sería mas o menos así:
Código MySQL:
Ver original INNER JOIN categories c
ON s.idcategorie
= c.idcategorie
WHERE c.idcategorie
= idcat
); INNER JOIN categories c
ON s.idcategorie
= c.idcategorie
WHERE c.idcategorie
= idcat
); SELECT 'Fallo al borrar posts.' resultado
; WHERE idcategory
= idcat
; WHERE idcategory
= idcat
; SELECT 'Fallo al borrar subcategorias.' resultado
; WHERE idcategory
= idcat
; WHERE idcategory
= idcat
; SELECT 'Fallo al borrar categoria' resultado
; SELECT 'Borrado exitoso' resultado
;
Aclaro que no lo he podido probar, por lo que puede contener muchos errores, y no sé si las versiones de MySQL posteriores a la 5.1.x soportan ROW_COUNT() .
Como nota, estoy haciendo que devuelva un result de mensaje, por lo que deberás recuperarlo al ejecutar el SP