Я использую следующий код в SQL Server 2005.
BEGIN TRANSACTION;
CREATE TABLE dbo.MyTable
(
idLang int NOT NULL IDENTITY (1, 1),
codeLang nvarchar(4) NOT NULL
) ON [PRIMARY];
IF @@ERROR = 0
BEGIN
PRINT 'before_commit';
COMMIT TRANSACTION;
PRINT 'after_commit';
END
ELSE
BEGIN
PRINT 'before_rollback';
ROLLBACK TRANSACTION;
PRINT 'after_rollback';
END
GO
1 - отображение, когда MyTable не существует (без ошибки):
before_commit
after_commit
=> OK
2 - Показать, когда MyTable существует (ошибка):
'В базе данных уже есть объект с именем' MyTable '.'
=> Почему не выполняется оператор else?(без печати, без отката)
Я знаю альтернативу try-catch, но я бы хотел понять этот странный случай ...
Спасибо!