Anche se non è chiaro cosa intendi esattamente con l'affermazione "usa il trigger per creare una chiave esterna", il tuo problema attuale è che SELECT INTO
non può essere utilizzato in query che restituiscono più di un risultato.
SELECT 1 INTO has_row FROM teacher INNER JOIN content ON content.teacher_id=teacher.teacher_id;
restituisce OGNI corrispondenza tra le due tabelle.
Se stavi cercando di verificare se teacher
contiene il teacher_id
valore utilizzato nel nuovo content
record, dovresti essere in grado di eliminare completamente la clausola JOIN e interrogare in questo modo:
SELECT 1 INTO has_row FROM `teacher` WHERE `teacher_id` = NEW.`teacher_id`;