1)情况:主从表同时插入数据时,所需要的事务控制
2)方案:在sql中控制(这个也可以在java原生代码或者spring中控制,但最终还是调用了数据库自身的事务控制)
3)数据库:sql server2008
4)数据库解决方式:(大致分为两种)
表结构:(图一)
4.1)方式一(SQL SERVER2005后支持):在insert语句中,通过output关键字,将对应的信息输出,语法:output inserted.对应表的字段
代码:(可以输出多个,通过逗号分隔即可,但又缺陷,不能在后续的sql语句中获取到该值)
insert into ApplyFlowBindExcDept(BindId,StepNo,Remark,DeptId,DeptName)
output inserted.ExcDeptId values(1,1,'b',1,'a')
效果:(图二)
弥补:通过临时表,存储对应的值,再在后续sql中操作临时表
代码:
declare @temp table(ExcDeptId int)
insert into ApplyFlowBindExc