我有两个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并在访问元数据上插入记录。有没有办法在访问中创建新记录,并在同一查询中创建访问元记录?
答案 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()
函数分别转换为此类表单)。