![](/img/trans.png)
[英]How to check if INSERT IGNORE has actually inserted the row from php
[英]Check if `INSERT SELECT` actually inserted rows
我正在嘗試使用PROPEL ORM使用INSERT SELECT
在表中插入一些行。 我試圖增量填充表,直到所有行都被復制。
$con = Propel::getConnection();
$sql = "INSERT INTO tmp_orders (id, name)
SELECT oo.id, oo.slip
FROM original_orders oo
LEFT JOIN tmp_orders tmp ON oo.id=tmp.id
WHERE tmp.id IS NULL
LIMIT 10" ;
$stmt = $con->prepare($sql);
$stmt->execute();
理想情況下,我想循環運行此腳本,直到復制所有記錄。 一旦沒有更多記錄可插入,我想停止循環。
我最初的解決方案是發出2個查詢。 首先從original_orders
進行選擇,以檢查select是否返回了更多數據,然后在另一個查詢中執行INSERT SELECT
。
問題是查詢速度太慢,因此我想避免只看一次是否有更多數據要插入兩次相同的選擇。
如果INSERT SELECT
實際上插入了任何內容,是否有辦法? 我嘗試了SELECT LAST_INSERT_ID();
在運行INSERT SELECT
,但它始終返回0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.