sql事务处理为什莫会成功?
表1名:class
字段:classid、classname
表2名stud
字段:studid、studname、studsex、studclass
表1与表2
建立关系classid(主键) studclass(外键)
语句:
BEGIN TRAN
INSERT INTO stud VALUES('001','李逍遥','男','1229')
INSERT INTO class VALUES('1229','二期')
IF @@error>0
BEGIN
ROLLBACK TRAN
END
ELSE
BEGIN
COMMIT TRAN
END
经测试insert语句会获得错误547 事务应该会回滚得,可是class表的数据却会更新成功。
将两个insert语句顺序颠倒测试:
BEGIN TRAN
INSERT INTO class VALUES('1229','二期')
INSERT INTO stud VALUES('001','杜明君','男','1229')
IF @@error>0
BEGIN
ROLLBACK TRAN
END
ELSE
BEGIN
COMMIT TRAN
END
将第一个insert语句改为:INSERT INTO classaad VALUES('1229','二期')
测试会发生回滚
但如果第一句不变
将第二个insert语句改为:INSERT INTO studasd VALUES('001','杜明君','男','1229')
测试,不会发生回滚,class表数据插入成功。
这是为什莫?请高手指点小弟。