【发布时间】:2010-10-01 20:51:29
【问题描述】:
我在 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
=> 好的
2 - MyTable 存在时显示(错误情况):
'数据库中已经有一个名为'MyTable'的对象。'
=> 为什么没有执行“else”语句? (不打印,不回滚)
我知道 try-catch 的替代方法,但我想了解这个奇怪的情况......
谢谢!
【问题讨论】:
标签: sql-server transactions printing