Sfortunatamente, l'eliminazione automatica che ritieni dovrebbe avvenire non avviene. Dovresti eliminare manualmente le righe nella tabella B che contengono l'ID dalla riga nella tabella A che desideri rimuovere.
Prova ad aggiungere ON DELETE CASCADE alla definizione della colonna della chiave esterna nella tabella B.
Se stai usando Hibernate, o qualche altro strumento ORM, avrebbe un meccanismo "a cascata" che lo gestirebbe automaticamente. Ma qui poiché ti stai interfacciando direttamente con il database, devi tenere presente che una riga non può essere eliminata se l'ID di detta riga esiste in qualsiasi altra tabella come chiave esterna (come nel tuo caso, la chiave primaria di A esiste in alcune delle righe in B). A meno che ovviamente non specifichi la proprietà ON DELETE CASCADE.