Вставить строку в таблицу B в запросе вставки таблицы A - PullRequest
0 голосов
/ 10 марта 2011

Используя MySQL, я предполагал, что есть способ сделать это реляционным способом, но, возможно, я ошибаюсь.

У меня есть таблица A с идентификатором пользователя и таблица B с идентификатором пользователя, она настроена на удаление A.userID для каскадирования и удаления B.userID.

Итак, у меня есть запрос (Использование CI), вставка информации в таблицу A, я хочу вставить строку в таблицу B с тем же идентификатором userID (PK, AI).Иногда он будет иметь значения для вставки в строку B.userID, иногда это будут полностью нулевые значения.

Мысли о том, как это сделать?

Спасибо.

Ответы [ 3 ]

1 голос
/ 10 марта 2011

Мне действительно нужно увидеть фактический запрос, но я считаю, что это то, что вы ищете.

Когда вы вставляете данные в CodeIgniter, вы можете получить первичный ключ вашей вставки следующим образом.

$this->db->insert('A',$data);  //insert into the table with 'userID' as PK, AI

$id_of_insert = $this->db->insert_id();

$data_for_b = array(
    'field' => 'value',
    ...
    'userID' => $id_of_insert   //insert the captured PK from A and place in the FK field of B
);

$this->db->insert('B', $data_for_b);
1 голос
/ 10 марта 2011

Самое простое, что нужно сделать, это написать хранимую процедуру для выполнения вставки.Это может сделать как вставки внутри транзакции, так и принять параметры для данных, добавляемых в B, а также в A. Затем вы запросите хранимый процесс вместо прямой вставки.

0 голосов
/ 10 марта 2011

Есть несколько вещей, которые вы должны рассмотреть в этом подходе:

  1. Если ваш auto_increment имеет значение BIGINT, он дает неправильные значения.

  2. Если вы вставили что-то, а кто-то еще что-то вставил, прежде чем прочитать значение, вы можете получить неправильный идентификатор. Я рекомендую читать значение с чем-то другим, уникальным. (например, псевдоним при регистрации пользователя).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...