0

我有 2 个需要执行的插入查询。每个查询都会在不同的表中插入数据。第一个查询有 ON DUPLICATE KEY UPDATE 子句。我需要做的是防止第二个查询运行是第一个查询由于 DUPLICATE KEY 而导致更新。

这是我目前的代码。

    $insertEvent = $db->processQuery('INSERT INTO calendar_events (start_on, end_on, subject, owner_id, created_by, phone_call_id, status )
                                        VALUES (?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE start_on = ?, end_on =?, status = ? ',
                                        array($start, $end, $subject, $owner, $created_by, $phone_call_id, $status, $start, $end, $status) );   
    $event_id = $db->lastinsertid();

    $insertEvent2 = $db->processQuery('INSERT INTO calendar_attendees (event_id, owner_id) VALUE (?, ?)', array($event_id, $owner));

我只想在 $insertEvent2 创建新记录时才执行 $insertEvent2 否则忽略第二条语句。

谢谢

4

1 回答 1

0

我相信你可以INSERT IGNORE在你的第二个使用语法INSERT,这样你的查询就会像

INSERT IGNORE INTO calendar_attendees (event_id, owner_id) VALUES (?, ?)

确保您UNIQE(event_id, owner_id).

顺便说一句,您在第二次插入中有错字。它应该VALUES代替VALUE.

于 2013-08-22T00:02:37.933 回答