SQL Les 12 25 May 2019
Agenda Herhaling Triggers Oefeningen Cursors 25 May 2019
Herhaling DML SELECT - statement SINGLE ROW FUNCTIONS JOIN OUTER JOIN INNER JOIN SELF JOIN GROUP FUNCTIONS SUBQUERIES 25 May 2019
Herhaling DML TRANSACTIONS INSERT UPDATE DELETE BEGIN TRAN COMMIT ROLLBACK 25 May 2019
Herhaling DDL TABLE VIEW PROCEDURELE EXTENSIONS STORED PROCEDURES USER DEFINED FUNCTIONS SCALAR VALUED FUNCTIONS TRIGGERS 25 May 2019
Trigger Een opzichzelf bestaande routine afhankelijk van een bepaalde tabel of view Trigger zorgt voor het uitvoeren van een actie indien er een event gebeurt op een tabel of view Event kan een DML of DDL statement zijn 25 May 2019
DML Trigger Table_name | view_name: FOR | AFTER | INSTEAD OF: Object waarop de trigger gebouwd wordt FOR | AFTER | INSTEAD OF: Wanneer moet de actie uitgevoerd worden? INSERT | UPDATE | DELETE Na welk event moet de actie gebeuren? 25 May 2019
Voorbeeld trigger Veronderstel: We hebben een tabel emp We hebben een tabel emp_audit, waarin we de operaties op emp willen bijhouden
Voorbeeld trigger (2)
Inserted and Deleted tables Twee tabellen onderhouden door het systeem Inserted: Bevat copies van de inserted rijen in de triggered tabel Deleted: Bevat copies van de deleted rijen in de triggered tabel Een UPDATE statement wordt behandeld als een DELETE gevolgd door een INSERT 25 May 2019
Toepassingen van DML triggers Audit van tabellen Implementeren van business rules Referentiële integriteit forceren Meer flexibiliteit dan de referentiële integriteit op tabel level 25 May 2019
Sequence van triggers sp_settriggerorder sp_helptrigger System stored procedure Zetten van de order van de triggers op een tabel Eerst of laatste trigger aanduiden voor een statement type (INSERT, UPDATE, DELETE, …) sp_helptrigger Tonen van eigenschappen van een trigger Niet van toepassing voor INSTEAD OF triggers 25 May 2019
DDL Triggers ALL SERVER | DATABASE: EVENT_TYPE Scope van de trigger (op een database of op de gehele server) EVENT_TYPE http://msdn.microsoft.com/en-us/library/bb522542.aspx 25 May 2019
DDL Triggers EVENT_GROUP Verschillen met DML triggers http://msdn.microsoft.com/en-us/library/bb510452.aspx Verschillen met DML triggers Geen INSERTED en DELETED tabellen Geen INSTEAD OF Scope op een database of Server en niet op een tabel of view 25 May 2019
Example DDL Trigger USE sample; GO CREATE TRIGGER prevent_drop_triggers ON DATABASE FOR DROP_TRIGGER AS PRINT 'You must disable "prevent_drop_triggers" to drop any trigger' ROLLBACK 25 May 2019
Oefening Make een trigger die in een AUDIT tabel wegschrijft wanneer een CREATE TABLE statement uitgevoerd is op de MyFirstDB database. Pas de trigger aan zodat de AUDIT tabel wordt opgevuld voor alle TABLE statements EXTRA: Vul in de AUDIT tabel ook de naam van de tabel die is aangepast alsook het event dat gebeurd is 25 May 2019
Cursor Syntax 25 mei 2019
Cursor (2) Simple example 25 mei 2019
Cursor (3) 25 mei 2019
Cursor (4) - steps 25 mei 2019
Cursors (5) Voordelen Gemakkelijk bij row-by-row procedures Scrolling door de data Quick&Dirty 25 mei 2019
Cursor (6) Nadelen Performance Vergt veel CPU kracht Vaak gebruikt voor Quick&Dirty programming Subtiele errors @@Fetch_status werkt niet Te veel rijen in de cursor 25 mei 2019
Oefeningen op Cursor Schrijf een cursor die in een extra column het verschil tussen de value van stat berekent van de huidige rij en vorige rij. In de eerste rij moet geen resultaat getoond worden. 25 mei 2019
Oefeningen op cursor Creëer een stored procedure die van alle tabellen in de MyFirstDB database de huidige grote van de tabel uitprint / wegschrijft naar het output scherm 25 mei 2019
Oefeningen op Triggers p. 385 Beginners Guide to SQL Server 2008 25 May 2019
Oefeningen Herhalingsoefeningen 25 mei 2019