Ti ringrazio della risposta ma volevo sapere
se è possibile gestire il tutto via SQL.

Riguardo la tua soluzione se devo risolvere
via Php preferisco usare questa procedura:


faccio la query che ho postato
se le affectedRows sono 0
faccio un'altra query
solo su categories.