sql从外部表varchar生成外键id?

5fjcxozz  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(224)

我正在制作一个javaee应用程序,在生产中我不得不多次删除并生成db。由于autoincrements的特性,在重新填充表之后,我不能简单地将外键设置为另一个表的主键。
例子:

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');

我知道这是一个愚蠢的例子,但我希望它能告诉你我想做什么:)

q9yhzks0

q9yhzks01#

如果我理解正确的话,我想你的问题是关于krak.phone table的。你想多次删除并重新创建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;

相关问题