0

我有两个mysql表,想插入多条记录而不是一一创建,获取id并插入相关记录

以下是表格:

CREATE TABLE `visit` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip_address` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

CREATE TABLE `visitmeta` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `page_visit_id` int(11) NOT NULL,
  `key` varchar(255) NOT NULL,
  `value` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
)

目前我在访问时插入一条记录,获取它的 id 并在访问元数据中插入记录。有没有办法在访问中创建新记录并在同一查询中创建访问元记录?

4

1 回答 1

1

用一个查询在两个表中插入记录是不可能的,但是您可以使用 MySQL 的LAST_INSERT_ID()函数在两个查询中插入记录:

INSERT INTO visit
  (ip_address)
VALUES
  ('1.2.3.4')
;

INSERT INTO visitmeta
  (page_visit_id, key, value)
VALUES
  (LAST_INSERT_ID(), 'foo', 'bar'),
  (LAST_INSERT_ID(), 'baz', 'qux')
;

另请注意,以原始的四字节二进制形式存储 IP 地址通常更方便/更高效(可以使用 MySQLINET_ATON()INET_NTOA()函数分别转换为/从这种形式)。

于 2012-10-14T22:50:47.323 回答