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

时间:2018-01-03 19:21:23

标签: mysql insert

我有以下数据:

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;

现在,我需要首先在城市表和州表中插入城市和州,如果它们不存在的话。如果它们存在,我需要获得与它们对应的主键:

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;

之后,我需要获得相应的主键,并需要放入第一个表。我怎样才能一气呵成?

1 个答案:

答案 0 :(得分:1)

您的城市和州表似乎没有AUTO_INCREMENT主键。您必须在插入这些表时指定值。

如果是这样,那么您的应用程序代码具有刚刚插入的值,您可以在插入地址表时使用它。

如果你确实使用了AUTO_INCREMENT主键,那么在插入到城市和州表后,你必须查询LAST_INSERT_ID()以获取id,并在插入地址表时使用这些。或者,如果您不想这样做,请在插入地址之前通过搜索城市名称或州名来查询ID。

相关问题