2013-08-21 2 views
0

У меня есть 2 вставки запросов, которые мне нужно выполнить. каждый запрос будет вставлять данные в другую таблицу. В первом запросе есть ON DUPLICATE KEY UPDATE. Мне нужно сделать, чтобы предотвратить запуск второго запроса, является первым, вызвавшим обновление из-за ключа DUPLICATE.Как вставить запись, если в предыдущем запросе нет дубликата в MySQL

вот мой код в настоящее время.

$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 только если $ insertEvent создал новый рекорд otherise игнорировать второе утверждение.

Благодаря

+0

Возможный дубликат [Как узнать, если при использовании «при повторном обновлении ключа» была вставлена ​​или обновлена ​​строка?] (Http://stackoverflow.com/questions/10709380/how-to-know-if-when -using-on-duplicate-key-update-a-row-was-insert-or-update) – eggyal

ответ

0

Я считаю, что вы можете использовать INSERT IGNORE синтаксис на ваш второй INSERT, так что ваш запрос будет выглядеть

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

Убедитесь, что у вас есть UNIQE ограничение на (event_id, owner_id).

Кстати, у вас есть опечатка во второй вставке. Это должно быть VALUES вместо VALUE.

+0

Что делать, если событие уже существовало в 'calendar_events', но без (или разных) участников в' calendar_attendees'? – eggyal

+0

Это хорошее решение. Я не был уверен, есть ли способ добавить условие в запрос для выполнения второго запроса только в том случае, если был выполнен первый запрос. Но вы решаете работу. Благодаря :) – Jaylen

Смежные вопросы