SQL从外表varchar生成外键ID?

时间:2018-10-03 19:07:28

标签: mysql sql insert

我正在制作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。

有没有办法我可以做类似的事情:

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

我知道这是一个愚蠢的示例,但我希望它向您展示我的尝试:)

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这些问题,我认为您的问题与krak.phone表有关。您想多次删除并重新创建krak.phone表。如果是正确的话,那么我建议您使用存储过程基于krak.person插入krak.phone。

例如,

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