0

実行する必要がある挿入クエリが 2 つあります。各クエリは、異なるテーブルにデータを挿入します。最初のクエリには、ON DUPLICATE KEY UPDATE 句があります。私がする必要があるのは、2 番目のクエリが実行されないようにすることです。最初のクエリは 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));

$insertEvent が新しいレコードを作成した場合にのみ $insertEvent2 を実行したいのですが、それ以外の場合は 2 番目のステートメントを無視します。

ありがとう

4

1 に答える 1

0

クエリが次のようになるようINSERT IGNOREに、2番目の構文を使用できると思いますINSERT

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

UNIQEに制約があることを確認してください(event_id, owner_id)

ところで、2 番目の挿入にタイプミスがあります。VALUESの代わりにする必要がありVALUEます。

于 2013-08-22T00:02:37.933 に答える