2013-03-21 6 views
-1

Я хочу запустить серию операторов SQL INSERT. Проблема в том, что я хочу подход «все или ничего». Либо все они выполняются, либо если один из них не выполняется, изменения в базу данных не вносятся.SQL - Гарантированное выполнение всех операторов

Единственное решение, которое я могу придумать, это использовать условный цикл, но это будет означать много избыточного кода (определение внесенных изменений, удаление таблиц и т. Д.) Есть ли более простое решение?

Я искал обширно для решения, но не нашел никаких подобные вопросы, поэтому извинения, если это было предложено до

+0

Какой бы ни был дебютный вопрос, не говоря о причине? – Delvin

ответ

2

Вы должны использовать Transaction, вы можете найти пример MSDN here.

+0

Да, это было все, что я просил !! Не знал этот термин ... – Delvin

0

К счастью, хорошая база данных - это та, которая обладает четырьмя свойствами ACID - Atomic, Consistent, Integrated и Durable.

Первое свойство - Atomic - относится к поведению транзакций, когда либо транзакция совершена одновременно, либо никаких изменений вообще не происходит.

Для получения дополнительной информации прочитайте книгу Korth «Концепции системы баз данных».

Если вы используете выдающуюся базу данных, такую ​​как Oracle, MS SQL Server, MySQL, DB2 и т. Д., Все, что вам нужно сделать, это немного изучить, как они обрабатывают транзакции и размещают ваши операторы DML в этих транзакциях.

Узнайте о поддержке транзакций Oracle here.

P.S.- Похоже, вы работаете в банковском домене. Эти люди одержимы этим.