C# 端
事务处理开始
插入主表A(Id) -- 一条主表数据
插入子表B(AId,Id) --大于10条数据
事务处理结束
SQL 触发器
在A上建立触发器,如根据A的Id 获取B关联AId的数据,此时发现一个问题,当触发器执行时,无法获取子表数据 即
Create trigger tr_A_insert
for insert
as
select @AId = Id from Inserted;--A表新增的数据
select count(1) from B where AId=@AId --统计数据,由于先后问题此时获取不到插入的B数据
.....
约束:不能修改C#程序
由于一次插入B的数据很多,因此没有将触发器建立在B上
如果你的目的是为了保证数据插入的准确性,根据你的情况分析,不是触发器可以解决的.
我的思路是这样:
1 A表增加验证字段,默认是为未验证
2 增加一个定时任务,验证过的数据将A表验证字段重置为已验证
你直接用事务操作吧。触发器的执行时间实在是做不到你的需求。
建议少用触发器,这个东西并不是安全的,尤其在I/O 吞吐量大的时候 可以直接让你的数据服务器挂掉!