Sql xp 10
Upcoming SlideShare
Loading in...5
×
 

Sql xp 10

on

  • 629 views

 

Statistics

Views

Total Views
629
Views on SlideShare
626
Embed Views
3

Actions

Likes
0
Downloads
19
Comments
0

1 Embed 3

http://niitcourseslides.blogspot.in 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Sql xp 10 Sql xp 10 Presentation Transcript

  • Implementing Triggers and TransactionsObjectivesIn this lesson, you will learn to: Create the INSERT, DELETE, and UPDATE triggers Modify triggers Drop triggers Enforce data integrity through triggers Use the AFTER and the INSTEAD OFF triggers©NIIT SQL/Lesson 10/Slide 1 of 49
  • Implementing Triggers and Transactions10.D.1 Using the INSERT Trigger When a new row is inserted in the Requisition table, the value of the siNoOfVacancy attribute should be less than the difference between the iBudgetedStrength and iCurrentStrength attributes of the Position table. Ensure that this user-defined data integrity requirement is implemented.©NIIT SQL/Lesson 10/Slide 2 of 49
  • Implementing Triggers and TransactionsTask List Identify the object that can maintain user-defined data integrity Draft statements to create an INSERT trigger Create a trigger in the database Check the existence of the trigger in the database Insert a row in the Requisition table and verify that the trigger is working©NIIT SQL/Lesson 10/Slide 3 of 49
  • Implementing Triggers and TransactionsIdentify the object that can maintain user-defined dataintegrity A trigger is a block of code that constitutes a set of T-SQL statements that are activated in response to certain actions Characteristics of a Trigger  It is fired automatically by SQL Server when any data modification statement is issued  It cannot be explicitly invoked or executed, as in the case of the stored procedures©NIIT SQL/Lesson 10/Slide 4 of 49
  • Implementing Triggers and TransactionsIdentify the object that can maintain data integrity(Contd.)  It prevents incorrect, unauthorized or inconsistent changes in data  It cannot return data to the user Result:  A trigger can be used to maintain data integrity©NIIT SQL/Lesson 10/Slide 5 of 49
  • Implementing Triggers and TransactionsDraft the statements to create an INSERT trigger Creating triggers  Triggers can be created in the Query Analyzer window by using the CREATE TRIGGER statement  Syntax CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR [INSERT | DELETE | UPDATE] AS sql_statements©NIIT SQL/Lesson 10/Slide 6 of 49
  • Implementing Triggers and TransactionsDraft the statements to create an INSERT trigger(Contd.) Magic tables  Whenever a trigger fires in response to the INSERT, DELETE, or UPDATE statement, two special tables are created. These are the inserted and the deleted tables. They are also referred to as magic tables  The inserted table contains a copy of all records that are inserted in the trigger table  The deleted table contains all records that have been deleted from the trigger table  Whenever any updation takes place, the trigger uses both the inserted and the deleted tables©NIIT SQL/Lesson 10/Slide 7 of 49
  • Implementing Triggers and TransactionsDraft the statements to create an INSERT trigger(Contd.) The INSERT Trigger  An INSERT trigger is fired whenever an attempt is made to insert a row in the trigger table  When an INSERT statement is issued, a new row is added to both the trigger and the inserted tables©NIIT SQL/Lesson 10/Slide 8 of 49
  • Implementing Triggers and TransactionsDraft the statements to create an insert trigger (Contd.) Action:  The table on which the trigger has to be created is Requisition  The trigger has to be of insert type  The name of the trigger can be trgInsertRequisition  Write the batch statements CREATE TRIGGER trgInsertRequisition ON Requisition FOR insert AS DECLARE @VacancyReported int DECLARE @ActualVacancy int SELECT @ActualVacancy = iBudgetedStrength - iCurrentStrength©NIIT SQL/Lesson 10/Slide 9 of 49
  • Implementing Triggers and TransactionsDraft the statements to create an insert trigger (Contd.) FROM Position Join Inserted on Position.cPositionCode = Inserted.cPositionCode SELECT @VacancyReported = inserted.siNoOfVacancy FROM inserted IF(@VacancyReported > @Actualvacancy) BEGIN PRINT The actual vacancies are less than the vacancies reported. Hence, cannot insert. ROLLBACK TRANSACTION END RETURN©NIIT SQL/Lesson 10/Slide 10 of 49
  • Implementing Triggers and TransactionsCreate a trigger in the database Action:  Type the drafted code in the Query Analyzer window  Press F5 to execute the code©NIIT SQL/Lesson 10/Slide 11 of 49
  • Implementing Triggers and TransactionsCheck the existence of the trigger in the database Action: sp_help trgInsertRequisition©NIIT SQL/Lesson 10/Slide 12 of 49
  • Implementing Triggers and TransactionsInsert a row in the Requisition table and verify that thetrigger is working Action: INSERT Requisition VALUES(000003,0001,getdate(), getdate() + 7, 0001, North, 20)©NIIT SQL/Lesson 10/Slide 13 of 49
  • Implementing Triggers and TransactionsJust a Minute...1. What are magic tables?2. Which statement is used to create triggers?©NIIT SQL/Lesson 10/Slide 14 of 49
  • Implementing Triggers and Transactions10.P.1 Using the INSERT Trigger When a new row is added to the Employee table, the iCurrentStrength attribute of the Position table should be increased by one.©NIIT SQL/Lesson 10/Slide 15 of 49
  • Implementing Triggers and Transactions10.D.2 Using the DELETE Trigger Create a trigger to disable deleting rows from the ContractRecruiter table©NIIT SQL/Lesson 10/Slide 16 of 49
  • Implementing Triggers and TransactionsTask List Draft statements to create a delete trigger Create the trigger in the database Check the existence of the trigger in the database Delete a row from the ContractRecruiter table to verify the trigger©NIIT SQL/Lesson 10/Slide 17 of 49
  • Implementing Triggers and TransactionsDraft statements to create a DELETE trigger DELETE trigger  A DELETE trigger is fired whenever an attempt is made to delete rows from the trigger table  There are three ways of implementing referential integrity using a DELETE trigger. These are: ® The Cascade method ® The Restrict method ® The Nullify method©NIIT SQL/Lesson 10/Slide 18 of 49
  • Implementing Triggers and TransactionsDraft statements to create a DELETE trigger (Contd.) Result:  The table on which the trigger is to be created is ContractRecruiter  The trigger is a DELETE trigger  The name of the trigger is trgDeleteContractRecruiter  The batch statements are: CREATE TRIGGER trgDeleteContractRecruiter ON ContractRecruiter FOR delete AS PRINT Deletion of Contract Recruiters is not allowed ROLLBACK TRANSACTION RETURN©NIIT SQL/Lesson 10/Slide 19 of 49
  • Implementing Triggers and TransactionsCreate the trigger in the database Action:  Type the drafted code in the Query Analyzer window  Press F5 to execute the codeCheck the existence of the trigger in the database Action: sp_help trgDeleteContractRecruiter©NIIT SQL/Lesson 10/Slide 20 of 49
  • Implementing Triggers and TransactionsDelete a row from the ContractRecruiter table to verifythe trigger Action:  Execute the following statement: DELETE ContractRecruiter WHERE cContractRecruiterCode = 000001  When this command is executed, the trigger would be fired and it would prevent the deletion of rows from the ContractRecruiter table©NIIT SQL/Lesson 10/Slide 21 of 49
  • Implementing Triggers and TransactionsJust a Minute... When is a DELETE trigger fired?©NIIT SQL/Lesson 10/Slide 22 of 49
  • Implementing Triggers and Transactions10.D 3. Using the UPDATE Trigger Create a trigger so that the average siPercentageCharge attribute of the ContractRecruiter table should not be more than 11 when the value of siPercentageCharge is increased for any ContractRecruiter©NIIT SQL/Lesson 10/Slide 23 of 49
  • Implementing Triggers and TransactionsTask List Draft statements to create an update trigger Create the trigger in the database Check the existence of the trigger in the database Update siPercentageCharge of the ContractRecruiter table and verify that the average does not exceed the required value©NIIT SQL/Lesson 10/Slide 24 of 49
  • Implementing Triggers and TransactionsDraft statements to create an UPDATE trigger The UPDATE trigger  This trigger is fired whenever there is a modification to the trigger table Result:  The table on which the trigger is to be created is ContractRecruiter  The trigger is an UPDATE trigger  The name of the trigger is trgUpdateContractRecruiter©NIIT SQL/Lesson 10/Slide 25 of 49
  • Implementing Triggers and TransactionsDraft statements to create an UPDATE trigger (Contd.)  The trigger is: CREATE TRIGGER trgUpdateContractRecruiter ON ContractRecruiter FOR UPDATE AS DECLARE @AvgPercentageCharge int SELECT @AvgPercentageCharge = avg(siPercentageCharge) FROM ContractRecruiter IF(@AvgPercentageCharge > 11) BEGIN PRINT The average cannot be more than 11 ROLLBACK TRANSACTION END RETURN©NIIT SQL/Lesson 10/Slide 26 of 49
  • Implementing Triggers and TransactionsCreate the trigger in the database In the Query Analyzer window, type the draft code Press F5 to execute the codeCheck the existence of the trigger in the database Action: sp_help trgUpdateContractRecruiter©NIIT SQL/Lesson 10/Slide 27 of 49
  • Implementing Triggers and TransactionsUpdate siPercentageCharge of the ContractRecruitertable and verify that the average does not exceed therequired value Action:  Execute the following UPDATE statement: UPDATE ContractRecruiter SET siPercentageCharge =siPercentageCharge+10 WHERE cContractRecruiterCode=0002’ If the average exceeds the limit, then the trigger would generate an error message©NIIT SQL/Lesson 10/Slide 28 of 49
  • Implementing Triggers and Transactions10.P.2 Using the UPDATE Trigger When an employee resigns, the resignation date is updated in the Employee table. After the resignation date is updated, the iCurrentStrength attribute of the Position table should be decreased by 1.©NIIT SQL/Lesson 10/Slide 29 of 49
  • Implementing Triggers and Transactions10.D.4 Modifying the Trigger Modify the trigger trgInsertRequisition that was created earlier to check whether the siNoOfVacancy attribute is less than the difference between iBudgetedStrength and iCurrentStrength from the Position table. If so, the trigger should display a message: “Sorry, the available vacancy is less than the reported vacancy. The transaction cannot be processed.”©NIIT SQL/Lesson 10/Slide 30 of 49
  • Implementing Triggers and TransactionsTask List Draft the command to modify the trigger Create the trigger in the database Check that the trigger has been modified in the database Insert a row in the Requisition table and verify that the trigger is working©NIIT SQL/Lesson 10/Slide 31 of 49
  • Implementing Triggers and TransactionsDraft the command to modify the trigger The ALTER TRIGGER Command  The contents of a trigger can be modified by: ® Dropping the trigger and recreating it ® Using the ALTER TRIGGER statement  It is advisable to drop a trigger and recreate it, if the objects being referenced by it are renamed©NIIT SQL/Lesson 10/Slide 32 of 49
  • Implementing Triggers and TransactionsDraft the command to modify the trigger (Contd.)  Syntax: ALTER TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR [INSERT | DELETE | UPDATE] AS sql_statements Action:  The table on which the trigger had been created is Requisition  Determine the type of trigger  The name of the trigger to be modified is trgInsertRequisition©NIIT SQL/Lesson 10/Slide 33 of 49
  • Implementing Triggers and TransactionsDraft the command to modify the trigger (Contd.)  Write the batch statements: ALTER TRIGGER trgInsertRequisition ON Requisition FOR insert AS DECLARE @VacancyReported int DECLARE @ActualVacancy int SELECT @ActualVacancy = iBudgetedStrength – iCurrentStrength FROM Position SELECT @VacancyReported = inserted.siNoOfVacancy FROM inserted©NIIT SQL/Lesson 10/Slide 34 of 49
  • Implementing Triggers and TransactionsDraft the command to modify the trigger (Contd.) IF(@VacancyReported > @ActualVacancy) BEGIN RAISERROR (Sorry, the available vacancy is less than the reported vacancy. The transaction cannot be processed., 10, 1) ROLLBACK TRANSACTION END RETURNCreate the trigger in the database Action:  In the Query Analyzer window, type the drafted code  Press F5 to execute the batch statement©NIIT SQL/Lesson 10/Slide 35 of 49
  • Implementing Triggers and TransactionsCheck that the trigger has been modified in thedatabase Action: sp_helptext trgInsertRequisitionInsert a row in Requisition table and verify that thetrigger is working Action: INSERT Requisition VALUES(000002,0001,getdate(),getdate() +7,’0001,North,20)©NIIT SQL/Lesson 10/Slide 36 of 49
  • Implementing Triggers and TransactionsJust a Minute... Which statement is used to recreate a trigger?©NIIT SQL/Lesson 10/Slide 37 of 49
  • Implementing Triggers and Transactions10.D.5 Dropping the Trigger The DELETE trigger named trgDeleteContractRecruiter needs to be removed, as it is no longer required.©NIIT SQL/Lesson 10/Slide 38 of 49
  • Implementing Triggers and TransactionsTask List Draft the command to delete the trigger Execute the command Verify that the trigger has been removed©NIIT SQL/Lesson 10/Slide 39 of 49
  • Implementing Triggers and TransactionsDraft the command to delete the trigger The DROP TRIGGER Command is used to delete a trigger from the database  Syntax: DROP TRIGGER trigger_name[,..n] Action:  The command to delete the trigger would be: DROP TRIGGER trgDeleteContractRecruiter©NIIT SQL/Lesson 10/Slide 40 of 49
  • Implementing Triggers and TransactionsExecute the command Action:  In the Query Analyzer window, type the drafted code  Press F5 to execute the batch statementVerify that the trigger has been removed Action: sp_help trgDeleteContractRecruiter  The above command will give an error message as the trigger has been removed©NIIT SQL/Lesson 10/Slide 41 of 49
  • Implementing Triggers and TransactionsEnforcing Data Integrity Through Triggers Triggers and Data Integrity  A trigger can be used to enforce business rules and data integrity in the following ways: ® Ifchanges are made to the master table, then the same changes are cascaded to all the dependent tables ® Ifsome changes violate referential integrity, then all such changes are rejected, thereby canceling any attempt to modify data in the database ® It allows very complex restrictions to be enforced ® Itcan perform a particular action, depending on the outcome of the modifications that have been made to the tables©NIIT SQL/Lesson 10/Slide 42 of 49
  • Implementing Triggers and TransactionsEnforcing Data Integrity Through Triggers (Contd.) Multiple Triggers  SQL Server allows multiple triggers to be defined on a given table. This implies that a single DML statement may fire two or more triggers. The triggers are fired in the order of creation AFTER and INSTEAD OF Triggers  The AFTER trigger can be created on any table for the INSERT, UPDATE, or DELETE operation just like the normal triggers  The AFTER trigger gets fired after the execution of the DML operation for which it has been defined©NIIT SQL/Lesson 10/Slide 43 of 49
  • Implementing Triggers and TransactionsEnforcing Data Integrity Through Triggers (Contd.)  By default, if more than one AFTER trigger is created on a table for a DML operation such as INSERT, UPDATE, or DELETE, then the sequence of execution is the order in which they were created  In case you have multiple AFTER triggers for any single DML operation, you can change the sequence of execution of these triggers by using the sp_settriggerorder system stored procedure  Syntax sp_settriggerorder <triggername>,<order-value>,<DML- operation>©NIIT SQL/Lesson 10/Slide 44 of 49
  • Implementing Triggers and TransactionsEnforcing Data Integrity Through Triggers (Contd.)  INSTEAD OF triggers can be primarily used to perform an action such as a DML operation, on another table or view  This type of trigger can be created on both table as well as on a view  Unlike AFTER triggers you cannot create more than one INSTEAD OF trigger for a DML operation on the same table or view©NIIT SQL/Lesson 10/Slide 45 of 49
  • Implementing Triggers and TransactionsJust a Minute... How are triggers used to maintain integrity and consistency of data?©NIIT SQL/Lesson 10/Slide 46 of 49
  • Implementing Triggers and TransactionsSummaryIn this lesson you learned that: A trigger is a block of code that constitutes a set of T-SQL statements that get activated in response to certain actions A trigger fires in response to the INSERT, UPDATE, and DELETE statements A trigger can be created in the Query Analyzer by using the CREATE TRIGGER statement A magic table is a conceptual table that is structurally similar to the table on which a trigger is defined©NIIT SQL/Lesson 10/Slide 47 of 49
  • Implementing Triggers and TransactionsSummary (Contd.) There are two types of magic tables:  Inserted, which stores a copy of the rows that have been inserted into the trigger table  Deleted, which stores those records that have been deleted from the trigger table A trigger can be viewed using the sp_help and sp_helptext system stored procedures A trigger can be altered using the ALTER TRIGGER statement A trigger can be deleted using the DROP TRIGGER statement©NIIT SQL/Lesson 10/Slide 48 of 49
  • Implementing Triggers and TransactionsSummary (Contd.) A trigger can be used to enforce business rules and data integrity The AFTER trigger is executed after all constraints and triggers defined on the table have successfully executed INSTEAD OF triggers can be used to perform another action such as a DML operation on another table or view©NIIT SQL/Lesson 10/Slide 49 of 49