以前很少用触发器,因为触发器在数据库中虽然好用,但是一旦出现逻辑问题可能产生更大得危险,昨天在使用触发器过程中发现,触发器得返回错误,.net并不一定能全部认识,有时候就没什么反映,如下触发器,回滚事务后,.net并没有什么反映。 CREATE TRIGGER [Insert_ NAME] ON dbo.Plan_Ship FOR INSERT AS DeClare @Plan_NO int, @AttemperNO int, @num1 int, @num2 int set @Plan_NO = (Select Plan_NO from inserted) set @attemperNO = (Select attemperNo from inserted) set @num1= (Select sum(FullTicket+HalfTicket+Guide) num from Plan_Predict where Plan_No = @Plan_No )------求出所有该团队人数 set @num2 = (select seat from ship_attemper where attemperNO = @attemperNO) if exists (select * from PlanSumSeat where attemperNO = @attemperNO) begin if @num1<(select sumSeat from PlanSumSeat where attemperNO = @attemperNO) begin update PlanSumSeat set sumSeat=(SumSeat-@num1) where attemperNO = @attemperNO update plan_predict set Ifshiped=1 where Plan_no = @PlanNO --设定该团已经配船 end else begin Raiserror('不成插入一个大于船舶数量得团队',10,3) RollBack ----回滚整个事务 end end else if @num1 < @num2 begin insert into PlanSumSeat (attemperNO,sumSeat) values(@attemperNO,(@num2-@num1)) update plan_predict set Ifshiped=1 where Plan_no = @PlanNO --设定该团已经配船 end else begin Raiserror('不成插入一个大于船舶数量得团队',10,3) Rollback ------如果大于船座位就回滚整个事务 end
转载于:https://www.cnblogs.com/playboy2005/archive/2004/06/25/18528.html