В реляционной базе данных FOREIGN KEY - это объявление о том, что вы намереваетесь вставить значения в T2, которые должны соответствовать уже существующему значению в T1, и что вы хотите, чтобы база данных отказывалась выполнить любое действие, которое нарушило бы это отношение.
Это не означает, что база данных будет создавать записи самостоятельно, чтобы удовлетворить отношения.Если вы попытаетесь вставить значение в T2, которое не существует в T1, команда потерпит неудачу;он не добавит необходимую запись в T1.
Это противоположно тому, что вы предлагаете, в котором вы хотите, чтобы значения внешнего ключа генерировались автоматически.Однако не требуется, чтобы значение первичного ключа на самом деле имело ссылки , и, кроме того, не существует ограничения на количество обращений к значению первичного ключа - так как же база данных будет угадывать, что должно быть создано в T2?
Тем не менее, если вы хотите, чтобы часть вашего собственного кода выполнялась автоматически при добавлении данных в T1, код, который может делать все, что вы хотите, вы можете создать триггер на T1.