我创建了这个事务(我的第一个事务),在Teacher
表中没有Id = 111
行,但是它在Subject
表上工作并插入了一个新行。它不应该回滚所有的变化吗?即使出现错误,事务也不会回滚?
BEGIN TRANSACTION
INSERT INTO Subject (Name, SupervisorId) VALUES('Statistics', 4)
UPDATE Teacher SET Name ='Hady' WHERE Id=111
COMMIT TRANSACTION
我再添加一些更多的逻辑,但仍然没有工作:
Begin Try
BEGIN TRANSACTION
INSERT INTO Subject (Name, SupervisorId) VALUES('Statistics', 4)
UPDATE TeacherO SET Name ='Hady' WHERE Id=111
COMMIT TRANSACTION
End Try
Begin Catch
ROLLBACK TRANSACTION
End Catch
我想到了这一点,所以我将'Teacher'表更改为一个不存在的:'TeacherO',但这并没有改变任何东西,或者这不是错误交易工作? –
如果您尝试对不存在的表使用UPDATE,那么它甚至不应该编译...... **错误是,如果您尝试将*错误*值设置为*现有*行** 。假设有一位ID = 2的老师,你会得到一个**真实的**错误,'UPDATE Teacher SET Id ='test'WHERE Id = 2;'这在任何情况下都应该是无效的...... – Shnugo
我懂了,我需要先阅读关于错误处理的内容 –