【发布时间】:2012-11-12 15:12:31
【问题描述】:
我有一个这样的交易,我有几个问题。
如果我要针对“Master”运行它,它应该会出错,因为表“Year”不存在,我看不到事务回滚。 SQL 只是抛出表/列不存在的错误。
如果我对存在表的数据库运行它并由于外键约束而使其出错,那么我确实看到事务回滚。
为什么我没有得到相同的结果。
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO Year (YearId, FiscalYear)
VALUES (NewId(), 2014)
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
PRINT 'ERROR'
DECLARE @ErrMsg nvarchar(4000)
, @ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
【问题讨论】:
标签: sql tsql transactions