我正在制作JAVA EE应用程序,在生产中,我不得不删除并生成数据库很多次。
并且由于自动增量的性质,在重新填充表后,我不能简单地将外键设置为另一个表的主键。
例:
INSERT INTO `krak`.`person` (`email`, `firstname`, `lastname`, `idaddress`) VALUES
('[email protected]', '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');
我知道这是一个愚蠢的示例,但我希望它向您展示我的尝试:)
最佳答案
如果我正确理解了这些问题,我认为您的问题与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;