Я думаю, вы неправильно понимаете, как работают внешние ключи.
Ссылка от потенциальных клиентов до пользователей означает, что строка уже должна существовать у пользователей, прежде чем строка в потенциальных клиентах сможет ссылаться на нее.
В SQL нет способа заставить зависимую таблицу автоматически создавать строку в своей родительской таблице по требованию.
Полагаю, вы могли бы сделать это с помощью триггера. Но не ограничения внешнего ключа. Кроме того, значения для заполнения в родительской таблице должны откуда-то приходить. Либо вам нужно указать их в операторе INSERT в вашем приложении или в триггере, либо использовать значения по умолчанию, определенные для каждого столбца в таблице пользователей. Учитывая, что у вас есть уникальное ограничение на users.username
, я не думаю, что это было бы возможно из-за триггера.
Re: ваш следующий вопрос в комментарии:
Нет, внешний ключ не может делать то, что вы описываете. Когда вы изменяете информацию в таблице leads
(таблица с внешним ключом), то, что может сделать внешний ключ only , это предотвратить модификацию, если вы попытаетесь изменить столбец leads.user_id
на значение это не найдено в таблице users
.
Внешний ключ в дочерней (leads
) таблице не может ничего изменить в родительской (users
) таблице.
Я не уверен, что является источником вашего ошибочного понимания. Вы где-то читали или видели, как кто-то делает что-то подобное?