Chociaż nie jest jasne, co dokładnie zamierzasz ze stwierdzeniem „użyj wyzwalacza, aby utworzyć klucz obcy”, Twoim obecnym problemem jest to, że SELECT INTO
nie może być używany w zapytaniach, które zwracają więcej niż jeden wynik.
SELECT 1 INTO has_row FROM teacher INNER JOIN content ON content.teacher_id=teacher.teacher_id;
zwraca KAŻDE dopasowanie między dwoma tabelami.
Jeśli próbowałeś sprawdzić, czy teacher
zawiera teacher_id
wartość używana w nowej content
rekord, powinieneś być w stanie całkowicie usunąć klauzulę JOIN i po prostu zapytać w ten sposób:
SELECT 1 INTO has_row FROM `teacher` WHERE `teacher_id` = NEW.`teacher_id`;