Я готовлюсь к своему сертификационному экзамену 70-761.
Проведение практического теста, на который я наткнулся, спросил: «Какие утверждения не будут откатываться в транзакции?»
Когда я проверял свои ответы впоследствии, я был удивлен, увидев «ALTER» и «ОБНОВЛЕНИЕ», где правильные ответы.
Однако, проверяя эту теорию, у меня не было никаких утверждений НЕ откат, когда ошибка былапредставленный.
Если это что-то меняет, я использую SQL Server Express на основе SQL Server 2016 (v13).
Это ошибка в ключе практического вопроса?
Вот копия транзакции.
begin
begin try
begin tran
update t4
set name = 'mikeyshit'
where name = 'Jim';
drop table t4;
drop table t5;
create table t4
(
id uniqueidentifier primary key default NEWSEQUENTIALID(),
name nvarchar(50)
);
insert into t4 (name)
values ('Jim'), ('Keith'), ('Paula'), ('Rose');
create table t5
(
id uniqueidentifier primary key default NEWSEQUENTIALID(),
name nvarchar(50)
);
insert into t5 (name)
values ('Jimmy'), ('Will'), ('Willow'), ('Lydia'), ('Bob');
-- test of rollback violates PK
insert into t1 (col1, col2) values (21, 'Chill');
commit tran
END TRY
BEGIN CATCH
Rollback Tran
select
ERROR_NUMBER(),
ERROR_MESSAGE(),
ERROR_PROCEDURE(),
ERROR_STATE(),
ERROR_SEVERITY(),
ERROR_LINE()
END CATCH
end