私はこれらのテーブルを持っています:
予約
- Reseration_ID
- ユーザーID
- 合計金額
観光_予約
- Tourist_ID - 外部キー
- Reservation_ID - 予約への外部キー
Extra_Chargesテーブル
- Extra_Charge_ID
- 額
- 説明
Tourist_Extra_Charges
- Tourist_ID - 外部キー
- Extra_Charge_ID - 外部キー
しかし、ユーザーが最初に予約を行うと (たとえば、基本パケットの料金が 500 ユーロTotalAmount
)、テーブルの列に挿入されReservation
ます。
しかし、次のフォームでは、ユーザーはテーブルにすぐに挿入されるものを選択できますextra_charges
(ただし、選択しない場合もあります)。extra_charges
Tourist_Extra_charges
問題は、ユーザーが extra_charges を選択したため、TotalAMount 列を更新する必要があることです。
したがって、テーブルに挿入した後、テーブルtourist_extra_charges
の列を更新するトリガーを作成したいと考えています。そして、これが私が思いついたものです。最適化できるかどうか、また全体として手順が適切かどうかアドバイスをお願いします。TotalAmount
Reservation
CREATE TRIGGER [dbo].[tralAmount] on [dbo].[TOURIST_EXTRA_CHARGES] After Insert
AS
BEGIN
Declare @Res_ID int
Declare @Sum_toAdd money
select @Res_ID = Reservation_ID from inserted
Inner join TOURIST_RESERVATION on inserted.Tourist_ID=TOURIST_RESERVATION.Tourist_ID
select @Sum_toAdd = Amout from inserted
Inner Join EXTRA_CHARGES on inserted.Extra_Charge_ID= EXTRA_CHARGES.Extra_Charge_ID
Update RESERVATIONS
Set Reservation_TotalAmount = (Reservation_TotalAmount + @Sum_toAdd)
where Reservation_ID=@Res_ID
END