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

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
你可以做這樣的查詢
$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)";
比準備、綁定參數和執行
- 1 回答
- 0 關注
- 84 瀏覽
添加回答
舉報
0/150
提交
取消