2012-10-14 38 views
0

我有兩個MySQL表,並希望插入多條記錄,而不是創建一個接一個,獲得ID和插入相關記錄在mysql中插入相關的多個記錄

這裏的表:

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並在訪問meta上插入記錄。有沒有辦法創建一個新的記錄訪問和在同一個查詢創建訪問元記錄?

+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()函數分別轉換爲/從這種形式)。

+0

這就是我目前正在做的。謝謝。 –