--triggers --stored procedure triggered by an event --insert, update, delete --for, after, instead of -- for and after let the event happen and then --execute the trigger code --instead of intercepts the event and does --the trigger code instead of the event Create trigger tr_BigDonation on Donation for insert As if not exists (Select name from Sys.Tables Where name='BigDonations') Begin Create table BigDonations ( DonationKey int, DonationDate DateTime, DonationAmount money, PersonKey int ) End Declare @DonationAmount money Declare @Threshold money =500 Select @DonationAmount = DonationAmount From Inserted if @DonationAmount >= @Threshold Begin Insert into BigDonations(DonationKey,DonationDate,DonationAmount, PersonKey) Select DonationKey, DonationDate, DonationAmount, PersonKey from Inserted End Select * from Person Insert into Donation(DonationDate, DonationAmount, PersonKey) Values(GetDate(), 550.75, 136) Select * from Donation Select * from BigDonations Go --Here is an alternate, more efficent version of that trigger Create trigger tr_BigDonation on Donation for insert As --declare variables Declare @DonationAmount money Declare @Threshold money =500 --get value from temporary Inserted table Select @DonationAmount = DonationAmount From Inserted --if the donation amount is 500 or above if @DonationAmount >= @Threshold Begin --outer if if not exists (Select name from Sys.Tables Where name='BigDonations') Begin--inner if Create table BigDonations ( DonationKey int, DonationDate DateTime, DonationAmount money, PersonKey int ) End --end inner if Insert into BigDonations(DonationKey,DonationDate,DonationAmount, PersonKey) Select DonationKey, DonationDate, DonationAmount, PersonKey from Inserted End --end outer if go Alter trigger tr_NoDelete on Donation instead of Delete, update As if not exists (Select name from Sys.Tables Where name='DeletedDonations') --if not create it Begin Create table DeletedDonations ( DonationKey int, DonationDate DateTime, DonationAmount money, PersonKey int ) End Insert into DeletedDonations (DonationKey,DonationDate, DonationAmount, PersonKey) Select DonationKey, DonationDate, DonationAmount, PersonKey from Deleted -- Delete from Donation where donationKey=47 Select * From Donation Select * From DeletedDonations go --disable trigger to allow deletions Disable trigger tr_NoDelete on Donation go --re enable trigger enable Trigger tr_NoDelete on Donation
Thursday, February 25, 2016
triggers
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment