在mysql中插入相关的多个记录

时间:2012-10-14 22:38:37

标签: mysql sql

我有两个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并在访问元数据上插入记录。有没有办法在访问中创建新记录,并在同一查询中创建访问元记录?

1 个答案:

答案 0 :(得分: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地址通常更方便/更高效(可以使用MySQL的INET_ATON()INET_NTOA()函数分别转换为此类表单)。