Вставка данных и связывание таблиц - PullRequest
0 голосов
/ 15 августа 2011

Я новичок в базах данных, но я знаю, как вставить данные в одну таблицу с помощью sql и php, но теперь мне нужно вставить данные из массива в несколько таблиц одновременно.Более того, у меня есть 3 основные таблицы и 2 таблицы связей, есть таблица связей между 1 и 2 и еще одна между 2 и 3. Как вставить данные в таблицы данных одновременно?Первичный ключ в связывающих таблицах состоит из первичных ключей 'id' из основных таблиц, которые устанавливаются с автоматическим приращением.Спасибо за любую помощь, ребята ..

Ответы [ 3 ]

0 голосов
/ 15 августа 2011

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

0 голосов
/ 15 августа 2011

Вы можете вставлять данные в таблицу один за другим.Но если вам нужно гарантировать, что данные существуют во всех таблицах одновременно, вы должны использовать транзакцию.Это поможет, если что-то идет не так, и вы не получите противоречивые данные в БД.Например, в PHP вы делаете это так:

$pdo_con = new PDO(...);
try {
$pdo_con->beginTransaction();

$pdo_con->exec("INSERT INTO table1 ....");
$table1_id = $pdo_con->lastInsertId();
$pdo_con->exec("INSERT INTO table2 ....");
$table2_id = $pdo_con->lastInsertId();
$pdo_con->exec("INSERT INTO linked_table .... values($table1_id, $table2_id )");
//repeat for other tables

$pdo_con->commit();
catch(PDOException $e) {
$pdo_con->rollback();
}
0 голосов
/ 15 августа 2011

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

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