Я не знаю конкретной функции SQL2008 с какой-либо службой SQL, которая поддерживает транзакции, вы можете сделать это:
- Начать транзакцию («НАЧАЛО ТРАНЗАКЦИИ» в TSQL)
- Остальная часть вашего кода INSERT / UPDATE / DELETE / what-ever
- (необязательно) Некоторые дополнительные операторы SELECT и такие, если необходимо, для вывода результата вышеуказанных действий, если по умолчанию выводится из шага 2 (вещикак «затронуты X строк») недостаточно
- Откат транзакции («ROLLBACK TRANSACTION» в TSQL)
- (необязательно) Повторите тестовый код, чтобы показать, как обстоят дела без кода в действии2, запустив
Например:
BEGIN TRANSACTION
-- make changes
DELETE people WHERE name LIKE 'X%'
DELETE people WHERE name LIKE 'D%'
EXEC some_proc_that_does_more_work
-- check the DB state after the changes
SELECT COUNT(*) FROM people
-- undo
ROLLBACK TRANSACTION
-- confirm the DB state without the changes
SELECT COUNT(*) FROM people
(вы можете предпочесть сделать необязательный шаг подтверждения перед началом транзакции, а не после ее отката, но ямы всегда делали это так, потому что он объединяет два, вероятно, идентичных раздела кода для более удобного редактирования)
Если вы используете что-то подобное, а не что-то специфичное для SQL2008метод должен быть перенесен и на другие RDBS (просто обновите синтаксис, если необходимо).