Может кто-нибудь помочь мне с этим оператором SQL.Я запускаю его на ядре SQL Server.
У меня есть следующий оператор, который удаляет все записи в таблице и заменяет их новыми:
SET XACT_ABORT ON;
BEGIN TRANSACTION;
DELETE FROM [t1] WHERE [id]>10;
INSERT INTO [t1] ([id], [v2], [v3]) SELECT COALESCE(MAX([id]), 0)+1, 'a1', 'b1' FROM [t1];
INSERT INTO [t1] ([id], [v2], [v3]) SELECT COALESCE(MAX([id]), 0)+1, 'a2', 'b2' FROM [t1];
--and so on, I may have up to 100 of these inserts
INSERT INTO [t1] ([id], [v2], [v3]) SELECT COALESCE(MAX([id]), 0)+1, 'aN', 'bN' FROM [t1];
COMMIT;
SET XACT_ABORT OFF;
Я хочу знать, какВы используете ROLLBACK в случае неудачной транзакции?
PS.В основном мне нужно вернуть базу данных к тому, что было раньше в случае любой ошибки в этом утверждении выше.
РЕДАКТИРОВАТЬ: Обновлено с SET XACT_ABORT ON;Заявление предлагается ниже.Это как должно выглядеть?