Вам нужно LAST_INSERT_ID()
Попробуйте что-то вроде этого:
INSERT INTO user (given, surname) VALUES ('Michael', 'Widenius');
SET @userId =: LAST_INSERT_ID();
INSERT INTO company(user_id, name) VALUES (@userId, 'MySQL AB');
INSERT INTO company(user_id, name) VALUES (@userId, 'MariaDB Corporation AB');
LAST_INSERT_ID дает вам значение идентификатора автоинкремента из, ну, с последней вставки.Затем вы сохраняете его в пользовательской переменной, а затем используете его для заполнения значений FK в других таблицах.
Это безопасно, даже если у вас много программ, выполняющих вставки, поскольку значение LAST_INSERT_ID поддерживается для каждого соединения с базой данных.
Если вы хотите сгенерировать значение самостоятельно, вы можете сделать это.
SET @userId = SELECT <<<random string>>
INSERT INTO user (user_id, given, surname) VALUES (@userId, 'Michael', 'Widenius');
INSERT INTO company(user_id, name) VALUES (@userId, 'MySQL AB');
INSERT INTO company(user_id, name) VALUES (@userId, 'MariaDB Corporation AB');
Вы хотите знать, как генерировать случайную строку в языке запросов MySQL?Смотри сюда. Генерация случайной и уникальной 8-символьной строки с использованием MySQL
Внимание: случайные строки в качестве первичных или внешних ключей труднее эффективно индексировать, чем целые числа с автоинкрементом.