簡體   English   中英

檢查`INSERT SELECT`是否實際插入行

[英]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

由於Propel使用PDO作為抽象層,因此可以使用PDOStatement :: rowCount

在您的情況下,可以按以下步驟進行:

$stmt->rowCount();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM