Предполагается, что ограничение внешнего ключа не позволит вам добавить недопустимые данные в столбец внешнего ключа.
В большинстве случаев он проверяет, действительно ли значение существует в указанной таблице. Поскольку у вас есть цикл в таблице user и entry, при попытке создать запись он проверит, существует ли значение entry.userID в таблице user. Он будет делать то же самое, когда вы пытаетесь добавить нового пользователя, он проверит в таблице записей значение, которое вы ввели для user.firstEntry. Если и пользователь, и запись являются новыми, невозможно связать их из-за вашего цикла. Для новой записи требуется существующий пользователь, а для новой записи - существующая запись. Когда обе таблицы пусты, я не думаю, что вы сможете выполнить ограничение.
Я бы предложил сохранить внешний ключ для userID в таблице записей (поскольку я предполагаю, что записи связаны с пользователями) и найти какой-либо другой способ представления первой записи пользователя. Может быть, таблица user_entry_history или что-то в этом роде.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ - Прошло некоторое время с тех пор, как я испортил дизайн базы данных.