在MySQL中,如果上一次查询中没有重复项,如何插入记录

在MySQL中,如果上一次查询中没有重复项,如何插入记录,mysql,Mysql,我需要执行2个insert查询。每个查询将在不同的表中插入数据。第一个查询具有ON replicate KEY UPDATE子句。我需要做的是防止第二个查询运行,因为第一个查询由于重复的密钥而导致更新 这是我目前的代码 $insertEvent = $db->processQuery('INSERT INTO calendar_events (start_on, end_on, subject, owner_id, created_by, phone_call_id, status

我需要执行2个insert查询。每个查询将在不同的表中插入数据。第一个查询具有ON replicate KEY UPDATE子句。我需要做的是防止第二个查询运行,因为第一个查询由于重复的密钥而导致更新

这是我目前的代码

    $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));
我只想在$insertEvent创建了一条新记录时执行$insertEvent2,否则忽略第二条语句

谢谢

我相信您可以在第二次插入时使用语法,这样您的查询看起来像

INSERT IGNORE INTO calendar_attendees (event_id, owner_id) VALUES (?, ?)
确保对
(事件id、所有者id)
UNIQE
约束


顺便说一句,你的第二次插入有一个输入错误。它应该是
,而不是

如果该事件已经存在于
日历事件中,但在
日历参与者中没有(或不同)参与者
,这是一个很好的解决方案。我不确定是否有办法在查询中添加一个条件,以便仅在执行第一个查询时才执行第二个查询。但你的解决方案是有效的。谢谢:)