Вы можете использовать temporary tables или создать view для NEW_TABLE
.
Временные таблицы
Вы можете использовать ключевое слово TEMPORARY при создании таблицы. Таблица TEMPORARY видна только для текущего сеанса и автоматически отбрасывается при закрытии сеанса. Это означает, что два разных сеанса могут использовать одно и то же имя временной таблицы, не конфликтуя друг с другом или с существующей таблицей без тегов с тем же именем. (Существующая таблица скрыта до тех пор, пока временная таблица не будет удалена.) Чтобы создать временные таблицы, вы должны иметь привилегию CREATE TEMPORARY TABLES.
--Temporary Table
create temporary table NEW_TABLE as (select * from ORIGINAL_TABLE group by id);
Просмотров
Просмотров (включая обновляемых просмотров) доступны в MySQL Server 5.0. Представления представляют собой хранимые запросы, которые при вызове создают набор результатов. Представление действует как виртуальная таблица. Представления доступны в бинарных версиях от 5.0.1 и выше.
--View
create view NEW_TABLE as select * from ORIGINAL_TABLE group by id;
мнение всегда будет обновляться со значениями в ORIGINAL_TABLE и вам не придется беспокоиться о том, дублирующую информацию в базе данных.
Если вы не хотите использовать представление, я считаю, что вы можете выполнять только вставку на одну таблицу за раз, если у вас нет какого-то вида, который бы позволил вам обоим, но вы, вероятно, захотите это сделать как два шага в транзакции
Сначала вы должны сообщить базе данных, что хотите, start a transaction. Затем вы выполните свои операции и проверьте, были ли они успешными. Вы можете получить id of last inserted row (это предполагает, что у вас есть поле auto_increment) для использования во втором выражении. Если оба оператора, похоже, работают нормально, вы можете изменить commit, или, если нет, rollback изменений.
Пример:
//Assume it will be okay
$success = true;
//Start the transaction (assuming you have a database handle)
$dbh->beginTransaction();
//First Query
$stmt = "Insert into ....";
$sth = $dbh->prepare($stmt);
//See if it works
if (!$sth->execute())
$success = false;
$last_id = $dbh->lastInsertId();
//Second Query
$stmt = "Insert into .... (:ID ....)";
$sth = $dbh->prepare($stmt);
$sth->bindValue(":ID", $last_id);
//See if it works
if (!$sth->execute())
$success = false;
//If all is good, commit, otherwise, rollback
if ($success)
$dbh->commit();
else
$dbh->rollBack();
Вы используете PDO или mysqli? Я уверен, что любой способ можно сделать, просто не уверен, какой синтаксис поможет вам больше. –
Попробуйте сделать это, используя временные таблицы в SQL. Для этого вам не нужен PHP. – Inceddy
Брайан - я использую PDO – jerauf