Отменить операцию SQL для нескольких хранимых процедур

Мы работаем над приложением, в котором иногда нам нужно удалить (некоторые) записи из таблицы SQL и заменить их новым списком строк. В нашем приложении логика такова:

Delete relevant_entries using delete_stored_procedure

For Each new_entry in new_entries
  Insert new_entry using insert_stored_procedure

Эта логика работает, но есть загвоздка. Что делать, если DELETE работает, но одна из INSERTS не работает? Нам нужно иметь возможность вернуть базу данных к состоянию до того, как строки таблицы были удалены и были вставлены любые предыдущие записи. Есть ли способ сделать это и ТОЛЬКО вернуть эти вещи, не затрагивая любые другие несвязанные операции, которые могли произойти одновременно? (т.е. строка создается в другой таблице - мы не хотим возвращать это).

Я понимаю, что вы можете заключить в транзакцию несколько операторов SQL, но в этом случае логика выполняется через несколько вызовов хранимых процедур. Любой совет?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Создайте еще одну хранимую процедуру, которая:

  • создает транзакцию
  • вызывает хранимые процедуры, которые выполняют работу
  • совершает или откатывает транзакцию

Спасибо, это был мой первоначальный план, но я не был уверен, смогу ли передать массив элементов в хранимую процедуру (требуется для части вставки). С тех пор я обнаружил, что вы можете объявить параметр с табличным значением и передать его в хранимую процедуру в SQL Server. Принимаю этот ответ.

Ben Atlas 10.08.2018 03:28

Другие вопросы по теме