考慮兩個(gè)表(我已經(jīng)簡(jiǎn)化了一點(diǎn),實(shí)際上有更多相關(guān)的表和更多的列):TABLE 'visit'-------------- id (auto increment)- visit_country- visit_browserTABLE 'pageview'----------------- id- visit_id (relates to visit.id)- page_url每天,我都想在這些表中插入一個(gè)大約有 100.000 次訪問(wèn)和 400.000 次點(diǎn)擊的 PHP 數(shù)組。加快這個(gè)過(guò)程的方法是在一個(gè)查詢中添加多個(gè)插入并將整個(gè)查詢打包成一個(gè)事務(wù)。但是,我的問(wèn)題是,為了插入瀏覽量,需要父訪問(wèn)的 Last Insert ID。在假設(shè)使用一個(gè)查詢插入 1000 次訪問(wèn)的事務(wù)中,我不能再使用 PDO 的 lastInsertId() 方法。理想情況下,我將所有內(nèi)容都放在一筆交易中。一個(gè)不太理想的解決方案是插入所有訪問(wèn)并添加一個(gè)引用列,然后執(zhí)行,檢查每次訪問(wèn)獲得的 ID,然后使用新事務(wù)插入命中。但這遠(yuǎn)非理想。解決這個(gè)問(wèn)題的方法是什么?ORM之類的Doctrine是如何解決這個(gè)問(wèn)題的(我這里需要通過(guò)PDO依賴原始SQL)?
1 回答

守著星空守著你
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
你可以做這樣的查詢
$sql = "INSERT INTO `visit` (`id`, `visit_country`, `visit_browser`)
VALUES (NULL, :visit_country, :visit_browser);
INSERT INTO `pageview` (`visit_id`, `page_url`)
VALUES (NULL, LAST_INSERT_ID(), :page_url)";
比準(zhǔn)備、綁定參數(shù)和執(zhí)行
- 1 回答
- 0 關(guān)注
- 83 瀏覽
添加回答
舉報(bào)
0/150
提交
取消