使用外键约束在多个表中输入数据

1dkrff03  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(151)

我有以下数据:

Array
(
    [teacher_street] => Okhla
    [teacher_city] => Delhi
    [teacher_state] => National Capital Territory of Delhi
    [teacher_pin] => 110025
)

我需要将上述数据插入一个名为address的表中:

CREATE TABLE `address` (
  `address_id` int(11) NOT NULL,
  `address_street` varchar(255) NOT NULL,
  `city_id` int(11) NOT NULL,
  `state_id` int(11) NOT NULL,
  `address_pin` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

现在,我需要先在city表和state表中插入city和state,如果它们不存在的话。如果它们存在,我需要获取对应于它们的主键:

CREATE TABLE `city` (
  `city_id` int(11) NOT NULL,
  `city_name` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `state` (
  `state_id` int(11) NOT NULL,
  `state_name` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

之后,我需要得到相应的主键,并需要把第一个表。我怎样才能一蹴而就呢?

gblwokeq

gblwokeq1#

您的城市和州表似乎没有自动递增主键。在插入这些表时,必须指定值。
如果是这样,那么您的应用程序代码就具有它刚刚插入的值,并且您可以在插入地址表时使用它。
如果您确实使用自动递增主键,您将不得不查询 LAST_INSERT_ID() 在插入城市和州表之后获取id,并在插入地址表时使用它们。或者,如果您不想这样做,请在插入地址之前通过搜索城市名称或州名称来查询id。

相关问题