SQL генерирует идентификатор внешнего ключа из внешних таблиц varchar? - PullRequest
0 голосов
/ 03 октября 2018

Я делаю приложение JAVA EE, и в процессе производства мне приходится много раз отбрасывать и генерировать БД.А из-за природы автоинкрементов я не могу просто установить внешний ключ для другого первичного ключа таблиц после повторного заполнения таблиц.

ПРИМЕР:

INSERT INTO `krak`.`person` (`email`, `firstname`, `lastname`, `idaddress`) VALUES 
('jonas@example.com', 'Jonas', 'Sørensen');

INSERT INTO `krak`.`phone` (`description`, `number`, `idperson`) VALUES 
('Noka 3210', '203948129', '1');

При удалении и создании человека в схеме krakего первичный ключ не будет 1, когда он будет создан во второй раз, он будет равен 2 из-за автоинкремента.

Есть ли способ, которым я могу сделать что-то вроде:

INSERT INTO `krak`.`phone` (`description`, `number`, `idperson`) VALUES 
('Noka 3210', '203948129', 'WHERE 'krak'.'person' email = hisEmail');

Я знаюэто глупый пример, но я надеюсь, что он покажет вам, что я пытаюсь сделать:)

1 Ответ

0 голосов
/ 03 октября 2018

Если я правильно понял вопросы, я думаю, что ваш вопрос касается таблицы krak.phone.Вы хотите сбросить и воссоздать таблицу krak.phone несколько раз.Если это правильно, я бы предложил вам использовать хранимую процедуру для вставки в krak.phone на основе krak.person.

Например,

INSERT INTO  `krak`.`phone` (`description`, `number`, `idperson`) 
SELECT 'Noka 3210', '203948129', ID FROM krak.person P WHERE P.email = hisEmail;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...