Нужна инструкция SQL для обновления и вставки одновременно - PullRequest
1 голос
/ 07 октября 2011

Мне нужен оператор sql, чтобы вставить новую строку в одну таблицу базы данных и обновить существующую строку в другой таблице базы данных на основе некоторых условий.

Есть ли способ сделать это? Чтобы вставить строку в одну таблицу и обновить строку в другой таблице базы данных в одном операторе sql?

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

Ответы [ 4 ]

4 голосов
/ 07 октября 2011

Да, они называются Транзакции и реализуются с START TRANSACTION and COMMIT/ROLLBACK с чем-то вроде:

START TRANSACTION;
  INSERT INTO ...
  UPDATE table2 SET name='TOTO' WHERE type=1;
COMMIT;

РЕДАКТИРОВАТЬ

На самом деле это не один SQL-запрос, но операция выполняется атомарно - и я думаю, что это то, что вам нужно.

3 голосов
/ 07 октября 2011

Один оператор SQL позволяет обновить одну таблицу, а не несколько;если это утверждение MERGE, то вы можете указать действия вставки / обновления / удаления, но все еще нацеленные на одну и ту же целевую таблицу.

Если вам нужна согласованность, используйте транзакции;пока транзакция не будет зафиксирована, изменения внутри нее не будут видны внешнему миру.

Если вы хотите, чтобы одно обновление (которое вы не можете контролировать) привело к скоординированной вставке, используйте триггер on update втаблица обновляется.Триггер вставляет соответствующие строки в другие таблицы.

1 голос
/ 07 октября 2011

Да, это возможно с помощью хранимых процедур.

Смотреть: Хранимые процедуры

1 голос
/ 07 октября 2011

Вы можете использовать Trigger для обновления второй таблицы при вставке первой таблицы

...