USE [Ticket]
GO
create Trigger [dbo].[Price]
on [dbo].[OrderList]
after insert
as
begin
declare @FlightId char(3)
declare @TicketType char(1)
select @TicketType = TicketType from inserted
select @FlightId = FlightId from inserted
declare @Flight_Id char(3)
declare @FPrice float
declare @BPrice float
declare @EPrice float
declare @Rebate float
declare @bool real
select @Flight_Id=FlightId
from Ticket
where FlightId=@FlightId
select @FPrice=FirstClassPrice
from Ticket
where FlightId=@FlightId
select @BPrice=BusinessClassPrice
from Ticket
where FlightId=@FlightId
select @EPrice=EconomyClassPrice
from Ticket
where FlightId=@FlightId
select @Rebate=Rebate
from Ticket
where FlightId=@FlightId
update OrderList
set TicketPrice = @FPrice * @Rebate
where (@Flight_Id = @FlightId and @TicketType like '1')
update OrderList
set TicketPrice = @BPrice * @Rebate
where (@Flight_Id = @FlightId and @TicketType like '2')
update OrderList
set TicketPrice = @EPrice * @Rebate
where (@Flight_Id = @FlightId and @TicketType like '3')
end
为什么一列都会更新?
update OrderList
set TicketPrice = @BPrice * @Rebate
where (@Flight_Id = @FlightId and @TicketType like '2')
随便抽一句SQL,看看where条件,和当前表的字段没有任何联系,只要这几个变量符合条件,所有记录都更新。
看看这几个变量和OrderList表的字段有没有关联吧,不然肯定全表更新
update语句写入所有字段的新值