У меня есть две таблицы, отчеты и события, каждая таблица имеет уникальный идентификатор, называемый id с автоматическим приращением, проблема в том, что идентификатор в каждой таблице не совпадает, потому что в отчете могут быть события, но, возможно, нет. Я хотел бы сделать двойную вставку, но у одного столбца в каждой таблице должен быть уникальный ключ. Я делаю это с помощью следующей функции:

function addactioneventuser(){

        try {

             $this->conn->beginTransaction();

              $query = "INSERT INTO
                    " . $this->table_name . "
                SET
                    case_id = ?, 
                    from_to = 0, 
                    action_id = ?, 
                    accepted = 0, 
                    message = ?";

        // prepare query statement
        $stmt = $this->conn->prepare($query);

        // bind values
        $stmt->bindParam(1, $this->case_id);
        $stmt->bindParam(2, $this->action_id);
        $stmt->bindParam(3, $this->message);



        // execute the query
        $stmt->execute();

    // insert event query
        $query2 = "INSERT INTO event_case

                SET 
                    title = ?, body = ?, class = ?, start = ?, end = ?, case_id= ?, worker_id = ?";

        // prepare query statement
        $stmt = $this->conn->prepare($query2);

        // bind values
        $stmt->bindParam(1, $this->title);
        $stmt->bindParam(2, $this->body);
        $stmt->bindParam(3, $this->class_event);
        $stmt->bindParam(4, $this->start);
        $stmt->bindParam(5, $this->end);
        $stmt->bindParam(6, $this->case_id);
        $stmt->bindParam(7, $this->worker_id);

    // execute the query
        $stmt->execute();   


    $this->conn->commit();
    return true;



} catch (Exception $e) {
  $stmt->rollBack();
  return false;
}

}

Две вставки работают отлично, но моя проблема в том, что два идентификатора для каждой таблицы не совпадают, и, как следствие, я не могу одновременно удалить определенную запись из обеих таблиц, и я не знаю, как это сделать Это. Я читал о Cascade и других возможных решениях, но ни одно из них не кажется подходящим для моей проблемы. Я не против создать еще один столбец, чтобы использовать его как ссылку для обеих таблиц, но я не знаю, как это сделать в приведенном выше запросе.

Заранее спасибо

lostintheriver

Ответов: 1

Ответы (1)

Идентификатор последней вставки: $ this-> conn-> insert_id; Вы можете получить его после операции и использовать идентификатор. Например, чтобы добавить его в нужную таблицу

2022 WebDevInsider