Introduction to Triggers using SQL

Size: px
Start display at page:

Download "Introduction to Triggers using SQL"

Transcription

1 Introduction to Triggers using SQL Kristian Torp Department of Computer Science Aalborg University torp November 24, 2011 daisy.aau.dk Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

2 Outline 1 A Case Study: General Concepts 2 A Case Study: With Code 3 Overview and Motivation Usage 4 Trigger Types 5 Case Study: Instead of Triggers 6 Managing Triggers 7 Summary Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

3 Learning Outcomes Goals Why? Note Understand basic trigger mechanism Understand pros and cons of triggers See procedural code in a DBMS Widely used in database applications Widely supported in most DBMSs Concepts presented are general Code presented is PostgreSQL specific One is Oracle specific because not supported on PostgreSQL Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

4 Two Minute Discussion Usage of Triggers Have you use triggers before? Have you used triggers for deriving temporal information? Does your organization have any policies wrt. triggers? Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

5 Outline 1 A Case Study: General Concepts 2 A Case Study: With Code 3 Overview and Motivation Usage 4 Trigger Types 5 Case Study: Instead of Triggers 6 Managing Triggers 7 Summary Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

6 Case Study: Handling Football Players Note Keep track of the players in all football clubs Keep a history of where each player has been playing Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

7 Case Study: Handling Football Players Note Keep track of the players in all football clubs Keep a history of where each player has been playing At Time 10 AaB buys the p l a y e r Wurtz i n s e r t i n t o p l a y e r values Wurtz, AaB ) ; Player Table Log Table Name Wurtz Club AaB Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

8 Case Study: Handling Football Players Note Keep track of the players in all football clubs Keep a history of where each player has been playing At Time 10 AaB buys the p l a y e r Wurtz i n s e r t i n t o p l a y e r values Wurtz, AaB ) ; Player Table Log Table Name Wurtz Club AaB Name Club start date stop date Wurtz AaB 10 null Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

9 Case Study: Handling Football Players Note Keep track of the players in all football clubs Keep a history of where each player has been playing At Time 10 AaB buys the p l a y e r Wurtz i n s e r t i n t o p l a y e r values Wurtz, AaB ) ; Player Table Log Table Note Name Wurtz Club AaB Name Club start date stop date Wurtz AaB 10 null All values are copied from the table player to the table log A value is automatically provided for the column start date A value cannot be provided for the column stop date Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

10 Case Study: Handling Football Players, cont. At Time 12 AaB buys the p l a y e r Caca i n s e r t i n t o p l a y e r values Caca, AaB ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

11 Case Study: Handling Football Players, cont. At Time 12 AaB buys the p l a y e r Caca i n s e r t i n t o p l a y e r values Caca, AaB ) ; Player Table Log Table Name Wurtz Caca Club AaB AaB Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

12 Case Study: Handling Football Players, cont. At Time 12 AaB buys the p l a y e r Caca i n s e r t i n t o p l a y e r values Caca, AaB ) ; Player Table Log Table Name Wurtz Caca Club AaB AaB Name Club start date stop date Wurtz AaB 10 null Caca AaB 12 null Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

13 Case Study: Handling Football Players, cont. At Time 12 AaB buys the p l a y e r Caca i n s e r t i n t o p l a y e r values Caca, AaB ) ; Player Table Log Table Name Wurtz Caca Club AaB AaB Name Club start date stop date Wurtz AaB 10 null Caca AaB 12 null Note Similar to the first insert Start date is the current-time, stop date is unknown/not specified/tbd Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

14 Case Study: Handling Football Players, cont. At Time 15 AaB s e l l s Wurtz to FCK update player set club = FCK where name = Wurtz ; Player Table Log Table Name Wurtz Caca Club FCK AaB Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

15 Case Study: Handling Football Players, cont. At Time 15 AaB s e l l s Wurtz to FCK update player set club = FCK where name = Wurtz ; Player Table Log Table Name Wurtz Caca Club FCK AaB Name Club start date stop date Wurtz AaB Caca AaB 12 null Wurtz FCK 15 null Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

16 Case Study: Handling Football Players, cont. At Time 15 AaB s e l l s Wurtz to FCK update player set club = FCK where name = Wurtz ; Player Table Log Table Name Wurtz Caca Club FCK AaB Name Club start date stop date Wurtz AaB Caca AaB 12 null Wurtz FCK 15 null Note The table player is naturally updated The column stop date for the first Wurtz row is updated in the log table A new row is entered into the log table Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

17 Case Study: Handling Football Players, cont. At Time 25 AaB s e l l s Caca to OB update player set club = OB where name = Caca ; Player Table Log Table Name Wurtz Caca Club FCK OB Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

18 Case Study: Handling Football Players, cont. At Time 25 AaB s e l l s Caca to OB update player set club = OB where name = Caca ; Player Table Log Table Name Wurtz Caca Club FCK OB Name Club start date stop date Wurtz AaB Caca AaB Wurtz FCK 15 null Caca OB 25 null Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

19 Case Study: Handling Football Players, cont. At Time 25 AaB s e l l s Caca to OB update player set club = OB where name = Caca ; Player Table Log Table Note Name Wurtz Caca Club FCK OB Similar to the first update Name Club start date stop date Wurtz AaB Caca AaB Wurtz FCK 15 null Caca OB 25 null Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

20 Case Study: Handling Football Players, cont. At Time 27 AaB buys Wurtz back from FCK update player set club = AaB where name = Wurtz ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

21 Case Study: Handling Football Players, cont. At Time 27 AaB buys Wurtz back from FCK update player set club = AaB where name = Wurtz ; Player Table Log Table Name Wurtz Caca Club AaB OB Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

22 Case Study: Handling Football Players, cont. At Time 27 AaB buys Wurtz back from FCK update player set club = AaB where name = Wurtz ; Player Table Log Table Name Wurtz Caca Club AaB OB Name Club start date stop date Wurtz AaB Caca AaB Wurtz FCK Caca OB 25 null Wurtz AaB 27 null Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

23 Case Study: Handling Football Players, cont. At Time 27 AaB buys Wurtz back from FCK update player set club = AaB where name = Wurtz ; Player Table Log Table Name Wurtz Caca Club AaB OB Name Club start date stop date Wurtz AaB Caca AaB Wurtz FCK Caca OB 25 null Wurtz AaB 27 null Note A new Wurtz row is started in the log table Still, similar to the previous updates Basically a delete followed by an insert Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

24 Case Study: Handling Football Players, cont. At Time 62 Wurtz r e t i r e s as an a c t i v e f o o t b a l l p l a y e r d e l e te from p l a y e r name = Wurtz ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

25 Case Study: Handling Football Players, cont. At Time 62 Wurtz r e t i r e s as an a c t i v e f o o t b a l l p l a y e r d e l e te from p l a y e r name = Wurtz ; Player Table Log Table Name Caca Club OB Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

26 Case Study: Handling Football Players, cont. At Time 62 Wurtz r e t i r e s as an a c t i v e f o o t b a l l p l a y e r d e l e te from p l a y e r name = Wurtz ; Player Table Log Table Name Caca Club OB Name Club start date stop date Wurtz AaB Caca AaB Wurtz FCK Caca OB 25 null Wurtz AaB Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

27 Case Study: Handling Football Players, cont. At Time 62 Wurtz r e t i r e s as an a c t i v e f o o t b a l l p l a y e r d e l e te from p l a y e r name = Wurtz ; Player Table Log Table Name Caca Club OB Name Club start date stop date Wurtz AaB Caca AaB Wurtz FCK Caca OB 25 null Wurtz AaB Note The Wurtz row is deleted from the player table The value column stop date is update for the last Wurtz row Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

28 Quiz: Handling Football Players Final Tables Player Table Name Club Caca OB Log Table Name Club start date stop date Wurtz AaB Caca AaB Wurtz FCK Caca OB 25 null Wurtz AaB Questions How to you identify the active players in the log table? What is the interpretation of the null values in the log table? What is the primary key of the log table? In how many clubs can a single player be active at once? When are rows deleted from the log table? Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

29 Outline 1 A Case Study: General Concepts 2 A Case Study: With Code 3 Overview and Motivation Usage 4 Trigger Types 5 Case Study: Instead of Triggers 6 Managing Triggers 7 Summary Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

30 Audit Trail Example create t a b l e p l a y e r ( p l a y e r i d i n t primary key, player name varchar ( 50) not n u l l, d a t e o f b i r t h date, club varchar ( 50) not n u l l ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

31 Audit Trail Example create t a b l e p l a y e r ( p l a y e r i d i n t primary key, player name varchar ( 50) not n u l l, d a t e o f b i r t h date, club varchar ( 50) not n u l l ) ; create t a b l e p l a y e r l o g ( p l a y e r i d i n t not n u l l, player name varchar ( 50) not n u l l, d a t e o f b i r t h date, club varchar ( 50) not n u l l, s t a r t d a t e date not n u l l, stop date date ) ; Note The primary keys are not the same in the two tables The stop date column is nullable Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

32 Insert Trigger create or replace f u n c t i o n f p l a y e r i n s ( ) r e t u r n s t r i g g e r as $$ begin i n s e r t i n t o p l a y e r l o g values ( new. p l a y e r i d, new. player name, new. d a t e o f b i r t h, new. club, c u r r e n t d a t e, n u l l ) ; r e t u r n new ; end ; $$ language p l p g s q l ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

33 Insert Trigger create or replace f u n c t i o n f p l a y e r i n s ( ) r e t u r n s t r i g g e r as $$ begin i n s e r t i n t o p l a y e r l o g values ( new. p l a y e r i d, new. player name, new. d a t e o f b i r t h, new. club, c u r r e n t d a t e, n u l l ) ; r e t u r n new ; end ; $$ language p l p g s q l ; create t r i g g e r p l a y e r i n s a f t e r i n s e r t on p l a y e r f o r each row execute procedure f p l a y e r i n s ( ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

34 Insert Trigger create or replace f u n c t i o n f p l a y e r i n s ( ) r e t u r n s t r i g g e r as $$ begin i n s e r t i n t o p l a y e r l o g values ( new. p l a y e r i d, new. player name, new. d a t e o f b i r t h, new. club, c u r r e n t d a t e, n u l l ) ; r e t u r n new ; end ; $$ language p l p g s q l ; create t r i g g e r p l a y e r i n s a f t e r i n s e r t on p l a y e r f o r each row execute procedure f p l a y e r i n s ( ) ; Note The new syntax The null is inserted into the stop date column The current date is give me the current date Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

35 Let Dreams Come Trough i n s e r t i n t o p l a y e r values (101, Wurtz, , AaB ) ; i n s e r t i n t o p l a y e r values (102, Messi, , AaB ) ; update player set club = Barcelona where player name = Messi ; d e l e te from p l a y e r where p l a y e r i d = 101; Note The clients cannot see the derived information Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

36 Delete Trigger create or replace f u n c t i o n f p l a y e r d e l ( ) r e t u r n s t r i g g e r as $$ begin update p l a y e r l o g set stop date = c u r r e n t d a t e where p l a y e r i d = old. p l a y e r i d and stop date i s n u l l ; r e t u r n old ; end ; $$ language p l p g s q l ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

37 Delete Trigger create or replace f u n c t i o n f p l a y e r d e l ( ) r e t u r n s t r i g g e r as $$ begin update p l a y e r l o g set stop date = c u r r e n t d a t e where p l a y e r i d = old. p l a y e r i d and stop date i s n u l l ; r e t u r n old ; end ; $$ language p l p g s q l ; create t r i g g e r p l a y e r d e l a f t e r d e l e t e on p l a y e r f o r each row execute procedure f p l a y e r d e l ( ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

38 Delete Trigger create or replace f u n c t i o n f p l a y e r d e l ( ) r e t u r n s t r i g g e r as $$ begin update p l a y e r l o g set stop date = c u r r e n t d a t e where p l a y e r i d = old. p l a y e r i d and stop date i s n u l l ; r e t u r n old ; end ; $$ language p l p g s q l ; create t r i g g e r p l a y e r d e l a f t e r d e l e t e on p l a y e r f o r each row execute procedure f p l a y e r d e l ( ) ; Note This trigger is only fired for delete statements Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

39 Update Trigger create or replace f u n c t i o n f p l a y e r u p d ( ) r e t u r n s t r i g g e r as $$ begin stop old update p l a y e r l o g set stop date = c u r r e n t d a t e where p l a y e r i d = old. p l a y e r i d and stop date i s n u l l ; s t a r t new i n s e r t i n t o p l a y e r l o g values ( new. p l a y e r i d, new. player name, new. d a t e o f b i r t h, new. club, c u r r e n t d a t e, n u l l ) ; r e t u r n new ; end ; $$ language p l p g s q l ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

40 Update Trigger create or replace f u n c t i o n f p l a y e r u p d ( ) r e t u r n s t r i g g e r as $$ begin stop old update p l a y e r l o g set stop date = c u r r e n t d a t e where p l a y e r i d = old. p l a y e r i d and stop date i s n u l l ; s t a r t new i n s e r t i n t o p l a y e r l o g values ( new. p l a y e r i d, new. player name, new. d a t e o f b i r t h, new. club, c u r r e n t d a t e, n u l l ) ; r e t u r n new ; end ; $$ language p l p g s q l ; create t r i g g e r player upd a f t e r update on p l a y e r f o r each row execute procedure f p l a y e r u p d ( ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

41 Outline 1 A Case Study: General Concepts 2 A Case Study: With Code 3 Overview and Motivation Usage 4 Trigger Types 5 Case Study: Instead of Triggers 6 Managing Triggers 7 Summary Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

42 Overview Triggers are executed implicitly When insert, update, or delete statements are executed Similar to a stored procedure, i.e., code Can make call-outs to procedural code Connected to a table In some DBMSs also on a view Triggers are side effects Normally considered very bad in software engineering Triggers not part of SQL-92 first introduced in SQL Many DBMS have supported triggers for much longer therefore limited standard compliance Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

43 Transition Tables A set of internal tables that the DBMS uses to keep track of modifications made by a transaction Four transition tables for each real table R during the execution of a transaction T i R inserted R deleted R updatedold R updatednew Contains the rows inserted into R during T i Contains the rows deleted from R during T i Contains the values of updated rows before T i Contains the values of updated rows after T i R new = R old \ R deleted \ R updatedold R inserted R updatednew Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

44 Outline 1 A Case Study: General Concepts 2 A Case Study: With Code 3 Overview and Motivation Usage 4 Trigger Types 5 Case Study: Instead of Triggers 6 Managing Triggers 7 Summary Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

45 Usage To generate derived values Sum of amount of order lines To create an audit trail Think STASI To enforce complex business rules When a customer buys goods for more than 300$ then give a 10% discount To generate statistics How often is a table modified To provide event logging Each time a new house is inserted in the for sale table notify potential customers Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

46 Another Example: Compute Derived Values I User Requirements Wants to store order and order lines The total amount of an order is derived from order lines The total amount is often queried Solution Store the derived information total amount with the order Makes it fast to look-up orders based on total amount Use triggers to automatically derived the total amount Convenient for the customers Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

47 Another Example: Compute Derived Values II create t a b l e oorder ( o o r d e r i d i n t primary key, customer name varchar2 (50) not n u l l, amount number (10,2) d e f a u l t 0 not n u l l, c o n s t r a i n t amount gt zero check ( amount > 0) d e f e r r a b l e i n i t i a l l y immediate ) ; create t a b l e o o r d e r l i n e ( o o r d e r i d i n t not n u l l, l i n e n o i n t not n u l l check ( l i n e n o > 0 ), dsc varchar2 (50) not n u l l, q u a n t i t y i n t not n u l l check ( q u a n t i t y > 0 ), price each number ( 6, 2 ) not n u l l check ( price each > 0. 0 ), c o n s t r a i n t o l p k primary key ( oorder i d, l i n e n o ), c o n s t r a i n t o l o f k f o r e i g n key ( o o r d e r i d ) references oorder ( o o r d e r i d ) ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

48 Another Example: Compute Derived Values III create or replace t r i g g e r set amount a f t e r i n s e r t or update or d e l e t e on o o r d e r l i n e f o r each row declare v a l number (10,2) := 0; oid i n t ; begin i f i n s e r t i n g then v a l := : new. q u a n t i t y : new. price each ; oid := : new. o o r d e r i d ; e l s i f updating then v a l := : new. q u a n t i t y : new. price each : old. q u a n t i t y : old. price each ; oid := : new. o o r d e r i d ; e l s i f d e l e t i n g then v a l := 0 : old. q u a n t i t y : old. price each ; oid := : old. o o r d e r i d ; end i f ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

49 Another Example: Compute Derived Values IV update oorder set amount = amount + v a l where o o r d e r i d = oid ; end ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

50 A Bad Example create or replace t r i g g e r set amount2 a f t e r i n s e r t on oorder f o r each row declare tmp amount number ( 1 0, 2 ) ; begin s e l e c t sum( q u a n t i t y price each ) i n t o tmp amount from o o r d e r l i n e where o o r d e r i d = : new. o o r d e r i d ; update oorder set amount = tmp amount where o o r d e r i d = : new. o o r d e r i d ; end ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

51 Mutating Triggers Insert trigger trigger Note A trigger can make an insert, this new insert may fire a trigger, etc Cannot have cycles will cause a mutating trigger Causes a runtime error

52 Mutating Triggers Insert trigger trigger trigger Note A trigger can make an insert, this new insert may fire a trigger, etc Cannot have cycles will cause a mutating trigger Causes a runtime error Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

53 Correct Usage Can have multiple triggers on a table Order of execution cannot be specified Can be hard to understand a database schema with many triggers A trigger cannot modify the table that it is associated with May cause an infinite loop of trigger executions Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

54 Correct Usage Can have multiple triggers on a table Order of execution cannot be specified Can be hard to understand a database schema with many triggers A trigger cannot modify the table that it is associated with May cause an infinite loop of trigger executions Not for Integrity Constraints Do not use triggers for enforcing referential integrity! Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

55 Trigger Parts Event on update of <table name>... Condition Must evaluate to true Action Code that is executed Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

56 Two Minute Discussion Triggers vs. Application Code Why not move trigger logic to applications? Discuss the pros and cons of this Would you like to have a trigger on select statements When and where could it be useful? Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

57 Outline 1 A Case Study: General Concepts 2 A Case Study: With Code 3 Overview and Motivation Usage 4 Trigger Types 5 Case Study: Instead of Triggers 6 Managing Triggers 7 Summary Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

58 Trigger Types I { row statement } { before after } A total of four trigger types Some DBMSs support INSTEAD OF triggers Very powerful, e.g., to make view updateable or hide legacy code Before triggers can be used for preconditions After triggers can be used for postconditions Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

59 Trigger Types II Statement level triggers always fires Row trigger fires only if rows are modified Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

60 Row Triggers: Setup Table Row Triggers Executed once for each row modified by triggering statement If no rows modified trigger is not executed Example (Create Table) create t a b l e x ( i i n t primary key, j i n t not n u l l ) ; Example (Populate Table) i n s e r t i n t o x values ( 1, 1 ) ; i n s e r t i n t o x values ( 2, 2 ) ; i n s e r t i n t o x values ( 3, 3 ) ; commit ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

61 Before Row Trigger Example (Stored Procedure) update row before t r i g g e r create or replace f u n c t i o n f x u p d b e f o r e r o w ( ) r e t u r n s t r i g g e r as $$ begin r a i s e n o t i c e before row ; r e t u r n new ; end ; $$ language p l p g s q l ; Example (Before Row Trigger) create t r i g g e r x upd before row before update on x f o r each row execute procedure f x u p d b e f o r e r o w ( ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

62 After Row Trigger Example (Stored Procedure) update row a f t e r t r i g g e r create or replace f u n c t i o n f x u p d a f t e r r o w ( ) r e t u r n s t r i g g e r as $$ begin r a i s e n o t i c e a f t e r row ; r e t u r n new ; end ; $$ language p l p g s q l ; Example (After Row Trigger) create t r i g g e r x u p d a f t e r r o w a f t e r update on x f o r each row execute procedure f x u p d a f t e r r o w ( ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

63 Statement Triggers Statement-Level Triggers Executed once for each triggering statement Executed even if no rows are modified Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

64 Statement Triggers Statement-Level Triggers Executed once for each triggering statement Executed even if no rows are modified Example (Stored Procedure) create or replace f u n c t i o n f x u p d b e f o r e s t m t ( ) r e t u r n s t r i g g e r as $$ begin r a i s e n o t i c e before stmt ; r e t u r n new ; end ; $$ language p l p g s q l ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

65 Statement Triggers Statement-Level Triggers Executed once for each triggering statement Executed even if no rows are modified Example (Stored Procedure) create or replace f u n c t i o n f x u p d b e f o r e s t m t ( ) r e t u r n s t r i g g e r as $$ begin r a i s e n o t i c e before stmt ; r e t u r n new ; end ; $$ language p l p g s q l ; Example (Before Statement Trigger) create t r i g g e r x upd before stmt before update on x f o r each statement execute procedure f x u p d b e f o r e s t m t ( ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

66 After Statement Trigger Example (Stored Procedure) create or replace f u n c t i o n f x u p d a f t e r s t m t ( ) r e t u r n s t r i g g e r as $$ begin r a i s e n o t i c e a f t e r stmt ; r e t u r n new ; end ; $$ language p l p g s q l ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

67 After Statement Trigger Example (Stored Procedure) create or replace f u n c t i o n f x u p d a f t e r s t m t ( ) r e t u r n s t r i g g e r as $$ begin r a i s e n o t i c e a f t e r stmt ; r e t u r n new ; end ; $$ language p l p g s q l ; Example (After Statement Trigger) create t r i g g e r x u p d a f t e r s t m t a f t e r update on x f o r each statement execute procedure f x u p d a f t e r s t m t ( ) ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

68 Other Types of Triggers System Event Triggers At database start up or shut down When a DBMS fails User-Event Ttriggers On logon and logoff When DML statement executed When DDL statement executed Note These types of triggers are not part of the SQL standard! Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

69 Outline 1 A Case Study: General Concepts 2 A Case Study: With Code 3 Overview and Motivation Usage 4 Trigger Types 5 Case Study: Instead of Triggers 6 Managing Triggers 7 Summary Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

70 Introduction Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

71 Very Strong Concept Can make all views updateable Can make modifications easier to understand Can wrap ugly database design, by nice design Can make the changes work for multiple programming languages Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

72 Mini University Schema Customer Requirements Wants to have a readable access to students status without joins A student name must have the column name name A student status must the column name status Wants to be able to modify a students status using strings Challenges name is a reserved word status is also a name of an exiting table Currently needs to join to get readable status of students Currently needs to memorize the int values used for status Solutions Create a view Use instead-of-triggers on view Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

73 Create the View Example (The View) create or replace view s t u d e n t s t a t u s as s e l e c t stu. s name as name, sta. dsc as s t a t u s from student stu, s t a t u s sta where stu. s t a t i d = sta. s t a t i d Note The name and status columns are in quotes A simple view statement Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

74 Insert Function I create or replace f u n c t i o n f i n s s t u d e n t s t a t u s ( ) r e t u r n s t r i g g e r as $$ declare v s t a t i d s t a t u s. s t a t i d%type ; v s i d student. s i d%type ; v no numeric ; begin check t h a t the s t a t u s column e x i s t s i n the s t a t u s t a b l e begin s e l e c t sta. s t a t i d i n t o v s t a t i d from s t a t u s sta where sta. dsc = lower ( new. s t a t u s ) ; exception when no data found then n u l l ; Need to r a i s e an e r r o r!!!! end ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

75 Insert Function II f i n d i f there are any students with the same name s e l e c t count ( stu. s i d ) i n t o v no from student stu where stu. s name = new. name ; i f v no > 0 then n u l l ; r a i s e an e r r o r end i f ; f i n d a new student i d s e l e c t coalesce (max( stu. s i d ), 0 ) i n t o v s i d from student stu ; v s i d := v s i d + 1; i n s e r t i n t o student values ( v sid, new. name, v s t a t i d ) ; r e t u r n new ; end ; $$ language p l p g s q l ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

76 Insert Instead-Of-Trigger Example (Create Trigger) create t r i g g e r i n s s t u d e n t s t a t u s instead of i n s e r t on s t u d e n t s t a t u s f o r each row execute procedure f i n s s t u d e n t s t a t u s ( ) ; Note All inserts on student status will call stored procedure View is now updateable Only insert supported Very few limit on what can be done in stored procedure Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

77 Delete Function create or replace f u n c t i o n f d e l s t u d e n t s t a t u s ( ) r e t u r n s t r i g g e r as $$ declare v s t a t i d s t a t u s. s t a t i d%type ; begin begin s e l e c t sta. s t a t i d i n t o v s t a t i d from s t a t u s sta where sta. dsc = lower ( old. s t a t u s ) ; exception when no data found then n u l l ; Need to r a i s e an e r r o r!!!! end ; delete from student where s name = old. name and s t a t i d = v s t a t i d ; r e t u r n new ; end ; $$ language p l p g s q l ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

78 Delete Instead-Of-Trigger Example (Create Trigger) create t r i g g e r d e l s t u d e n t s t a t u s instead of d e l e t e on s t u d e n t s t a t u s f o r each row execute procedure f d e l s t u d e n t s t a t u s ( ) ; Note All delete on student status will call stored procedure Similar idea as for the insert instead-of trigger Trigger for update can be defined in a similar way Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

79 Use the Updateable View Example (Update Through View) i n s e r t through the view i n s e r t i n t o s t u d e n t s t a t u s values ( Curt, a c t i v e ) ; delete through the view d e l e te from s t u d e n t s t a t u s where name = Ann ; Note View now behave (almost) like a table Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

80 Summary: Instead-Of Triggers Summary Note A very powerful concept Generally well-supported most DBMSs Old or ugly design can removed and old application logic retained Insert, update, and delete can be combined in a single stored procedure Should make sense! Too many triggers makes the database very hard to maintain! Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

81 Outline 1 A Case Study: General Concepts 2 A Case Study: With Code 3 Overview and Motivation Usage 4 Trigger Types 5 Case Study: Instead of Triggers 6 Managing Triggers 7 Summary Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

82 Enabling and Disabling Triggers Example (Disable Triggers) d i s a b l e s i n g l e t r i g g e r a l t e r t a b l e x d i s a b l e t r i g g e r x u p d a f t e r r o w ; d i s a b l e a l l t r i g g e r s on a s i n g l e t a b l e a l t e r t a b l e x d i s a b l e t r i g g e r a l l ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

83 Enabling and Disabling Triggers Example (Disable Triggers) d i s a b l e s i n g l e t r i g g e r a l t e r t a b l e x d i s a b l e t r i g g e r x u p d a f t e r r o w ; d i s a b l e a l l t r i g g e r s on a s i n g l e t a b l e a l t e r t a b l e x d i s a b l e t r i g g e r a l l ; Example (Enable Triggers) enable s i n g l e t r i g g e r a l t e r t a b l e x enable t r i g g e r x u p d a f t e r r o w ; enable a l l t r i g g e r s on a s i n g l e t a b l e a l t e r t a b l e x enable t r i g g e r a l l ; Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

84 Enabling and Disabling Triggers Example (Disable Triggers) d i s a b l e s i n g l e t r i g g e r a l t e r t a b l e x d i s a b l e t r i g g e r x u p d a f t e r r o w ; d i s a b l e a l l t r i g g e r s on a s i n g l e t a b l e a l t e r t a b l e x d i s a b l e t r i g g e r a l l ; Example (Enable Triggers) enable s i n g l e t r i g g e r a l t e r t a b l e x enable t r i g g e r x u p d a f t e r r o w ; enable a l l t r i g g e r s on a s i n g l e t a b l e a l t e r t a b l e x enable t r i g g e r a l l ; Note Be careful, know why a trigger is disabled! Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

85 Trigger Metadata Example (Find Information on All Triggers) s e l e c t from information schema. t r i g g e r s ; Note Cannot see if trigger is enabled/disabled Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

86 Trigger Metadata Example (Find Information on All Triggers) s e l e c t from information schema. t r i g g e r s ; Note Cannot see if trigger is enabled/disabled Example (Find All Disabled Triggers) s e l e c t p. from p g t r i g g e r as p where p. tgenabled = D Note This is PostgreSQL specific Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

87 Dropping Triggers Example (Find Information on All Triggers) Drop row t r i g g e r on t a b l e drop t r i g g e r x u p d a f t e r r o w on x ; Drop instead of t r i g g e r on view drop t r i g g e r i n s s t u d e n t s t a t u s on s t u d e n t s t a t u s ; Note The triggers are now removed from the database schema! There is no syntax for dropping all triggers on a table! Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

88 Summary: Trigger Management Summary Note Triggers can be enabled/disabled When table/view dropped all triggers automatically dropped A view cannot always altered therefore triggers on views cannot be altered Disabling triggers can lead to hard to find bugs Many DBMSs have vendor specific extension for triggers Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

89 Outline 1 A Case Study: General Concepts 2 A Case Study: With Code 3 Overview and Motivation Usage 4 Trigger Types 5 Case Study: Instead of Triggers 6 Managing Triggers 7 Summary Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

90 Use or Avoid Triggers? Use Triggers For any type of logging Also called auditing For deriving information For advanced checking that cannot be implemented using integrity constraints For automating tasks associated with modification statements For simple data replication To wrap bad database design Avoid Triggers That must be retained of backwards compatibility reasons When a declarative statement can be used Triggers are procedural When foreign key or check statement can be used Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

91 Summary E-C-A rules (event-condition-action) Triggers are called implicitly Side-effects {before, after} {row, statement} Instead-of triggers interesting for hiding legacy design Very powerful concept Avoid transaction handling in triggers (commit or rollback) Do not overuse the number of triggers Can make it very hard to find out what a system does Many vendor specific extensions for trigger functionality Because very late before added to the standard Core idea large overlap between DBMSs Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

92 Additional Information Note PL/pgSQL How to write the trigger stored procedures Triggers in MySQL Good overview, well explained, linear readable document Exploring SQL Server Triggers msdn.microsoft.com/en-us/magazine/cc aspx Good introduction, quite readable Triggers in Oracle Trigger/Catalog0560 Trigger.htm Only code, many details, Oracle specific Cannot find a good general introduction to triggers Send me an if you are aware of such an introduction Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

93 Two-Minute Digesting Questions Why can you not specify the order in which triggers execute? Why can triggers not be stand-alone database objects? Why are triggers part of the transaction? You have the same logic that must be executed by a trigger and sometimes explicitly what do you do? Kristian Torp (Aalborg University) Introduction to Triggers using SQL November 24, / 63

SQL NULL s, Constraints, Triggers

SQL NULL s, Constraints, Triggers CS145 Lecture Notes #9 SQL NULL s, Constraints, Triggers Example schema: CREATE TABLE Student (SID INTEGER PRIMARY KEY, name CHAR(30), age INTEGER, GPA FLOAT); CREATE TABLE Take (SID INTEGER, CID CHAR(10),

More information

Introduction to the Oracle DBMS

Introduction to the Oracle DBMS Introduction to the Oracle DBMS Kristian Torp Department of Computer Science Aalborg University www.cs.aau.dk/ torp torp@cs.aau.dk December 2, 2011 daisy.aau.dk Kristian Torp (Aalborg University) Introduction

More information

Normal Form vs. Non-First Normal Form

Normal Form vs. Non-First Normal Form Normal Form vs. Non-First Normal Form Kristian Torp Department of Computer Science Aalborg Univeristy www.cs.aau.dk/ torp torp@cs.aau.dk September 1, 2009 daisy.aau.dk Kristian Torp (Aalborg University)

More information

SQL Databases Course. by Applied Technology Research Center. This course provides training for MySQL, Oracle, SQL Server and PostgreSQL databases.

SQL Databases Course. by Applied Technology Research Center. This course provides training for MySQL, Oracle, SQL Server and PostgreSQL databases. SQL Databases Course by Applied Technology Research Center. 23 September 2015 This course provides training for MySQL, Oracle, SQL Server and PostgreSQL databases. Oracle Topics This Oracle Database: SQL

More information

Oracle Database: SQL and PL/SQL Fundamentals

Oracle Database: SQL and PL/SQL Fundamentals Oracle University Contact Us: 1.800.529.0165 Oracle Database: SQL and PL/SQL Fundamentals Duration: 5 Days What you will learn This course is designed to deliver the fundamentals of SQL and PL/SQL along

More information

14 Triggers / Embedded SQL

14 Triggers / Embedded SQL 14 Triggers / Embedded SQL COMS20700 Databases Dr. Essam Ghadafi TRIGGERS A trigger is a procedure that is executed automatically whenever a specific event occurs. You can use triggers to enforce constraints

More information

Introduction This document s purpose is to define Microsoft SQL server database design standards.

Introduction This document s purpose is to define Microsoft SQL server database design standards. Introduction This document s purpose is to define Microsoft SQL server database design standards. The database being developed or changed should be depicted in an ERD (Entity Relationship Diagram). The

More information

Oracle Database: SQL and PL/SQL Fundamentals NEW

Oracle Database: SQL and PL/SQL Fundamentals NEW Oracle University Contact Us: + 38516306373 Oracle Database: SQL and PL/SQL Fundamentals NEW Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals training delivers the

More information

Programming Database lectures for mathema

Programming Database lectures for mathema Programming Database lectures for mathematics students April 25, 2015 Functions Functions are defined in Postgres with CREATE FUNCTION name(parameter type,...) RETURNS result-type AS $$ function-body $$

More information

Duration Vendor Audience 5 Days Oracle End Users, Developers, Technical Consultants and Support Staff

Duration Vendor Audience 5 Days Oracle End Users, Developers, Technical Consultants and Support Staff D80198GC10 Oracle Database 12c SQL and Fundamentals Summary Duration Vendor Audience 5 Days Oracle End Users, Developers, Technical Consultants and Support Staff Level Professional Delivery Method Instructor-led

More information

Oracle Database: SQL and PL/SQL Fundamentals

Oracle Database: SQL and PL/SQL Fundamentals Oracle University Contact Us: +966 12 739 894 Oracle Database: SQL and PL/SQL Fundamentals Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals training is designed to

More information

Database Programming with PL/SQL: Learning Objectives

Database Programming with PL/SQL: Learning Objectives Database Programming with PL/SQL: Learning Objectives This course covers PL/SQL, a procedural language extension to SQL. Through an innovative project-based approach, students learn procedural logic constructs

More information

Instant SQL Programming

Instant SQL Programming Instant SQL Programming Joe Celko Wrox Press Ltd. INSTANT Table of Contents Introduction 1 What Can SQL Do for Me? 2 Who Should Use This Book? 2 How To Use This Book 3 What You Should Know 3 Conventions

More information

5. CHANGING STRUCTURE AND DATA

5. CHANGING STRUCTURE AND DATA Oracle For Beginners Page : 1 5. CHANGING STRUCTURE AND DATA Altering the structure of a table Dropping a table Manipulating data Transaction Locking Read Consistency Summary Exercises Altering the structure

More information

Databases What the Specification Says

Databases What the Specification Says Databases What the Specification Says Describe flat files and relational databases, explaining the differences between them; Design a simple relational database to the third normal form (3NF), using entityrelationship

More information

Fine Grained Auditing In Oracle 10G

Fine Grained Auditing In Oracle 10G Fine Grained Auditing In Oracle 10G Authored by: Meenakshi Srivastava (meenaxi.srivastava@gmail.com) 2 Abstract The purpose of this document is to develop an understanding of Fine Grained Auditing(FGA)

More information

Oracle Database: SQL and PL/SQL Fundamentals NEW

Oracle Database: SQL and PL/SQL Fundamentals NEW Oracle University Contact Us: 001-855-844-3881 & 001-800-514-06-97 Oracle Database: SQL and PL/SQL Fundamentals NEW Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals

More information

SQL Simple Queries. Chapter 3.1 V3.0. Copyright @ Napier University Dr Gordon Russell

SQL Simple Queries. Chapter 3.1 V3.0. Copyright @ Napier University Dr Gordon Russell SQL Simple Queries Chapter 3.1 V3.0 Copyright @ Napier University Dr Gordon Russell Introduction SQL is the Structured Query Language It is used to interact with the DBMS SQL can Create Schemas in the

More information

Oracle SQL. Course Summary. Duration. Objectives

Oracle SQL. Course Summary. Duration. Objectives Oracle SQL Course Summary Identify the major structural components of the Oracle Database 11g Create reports of aggregated data Write SELECT statements that include queries Retrieve row and column data

More information

Oracle 10g PL/SQL Training

Oracle 10g PL/SQL Training Oracle 10g PL/SQL Training Course Number: ORCL PS01 Length: 3 Day(s) Certification Exam This course will help you prepare for the following exams: 1Z0 042 1Z0 043 Course Overview PL/SQL is Oracle's Procedural

More information

How To Create A Table In Sql 2.5.2.2 (Ahem)

How To Create A Table In Sql 2.5.2.2 (Ahem) Database Systems Unit 5 Database Implementation: SQL Data Definition Language Learning Goals In this unit you will learn how to transfer a logical data model into a physical database, how to extend or

More information

A basic create statement for a simple student table would look like the following.

A basic create statement for a simple student table would look like the following. Creating Tables A basic create statement for a simple student table would look like the following. create table Student (SID varchar(10), FirstName varchar(30), LastName varchar(30), EmailAddress varchar(30));

More information

D61830GC30. MySQL for Developers. Summary. Introduction. Prerequisites. At Course completion After completing this course, students will be able to:

D61830GC30. MySQL for Developers. Summary. Introduction. Prerequisites. At Course completion After completing this course, students will be able to: D61830GC30 for Developers Summary Duration Vendor Audience 5 Days Oracle Database Administrators, Developers, Web Administrators Level Technology Professional Oracle 5.6 Delivery Method Instructor-led

More information

ETL Process in Data Warehouse. G.Lakshmi Priya & Razia Sultana.A Assistant Professor/IT

ETL Process in Data Warehouse. G.Lakshmi Priya & Razia Sultana.A Assistant Professor/IT ETL Process in Data Warehouse G.Lakshmi Priya & Razia Sultana.A Assistant Professor/IT Outline ETL Extraction Transformation Loading ETL Overview Extraction Transformation Loading ETL To get data out of

More information

ATTACHMENT 6 SQL Server 2012 Programming Standards

ATTACHMENT 6 SQL Server 2012 Programming Standards ATTACHMENT 6 SQL Server 2012 Programming Standards SQL Server Object Design and Programming Object Design and Programming Idaho Department of Lands Document Change/Revision Log Date Version Author Description

More information

Demystified CONTENTS Acknowledgments xvii Introduction xix CHAPTER 1 Database Fundamentals CHAPTER 2 Exploring Relational Database Components

Demystified CONTENTS Acknowledgments xvii Introduction xix CHAPTER 1 Database Fundamentals CHAPTER 2 Exploring Relational Database Components Acknowledgments xvii Introduction xix CHAPTER 1 Database Fundamentals 1 Properties of a Database 1 The Database Management System (DBMS) 2 Layers of Data Abstraction 3 Physical Data Independence 5 Logical

More information

php tek 2006 in Orlando Florida Lukas Kahwe Smith smith@pooteeweet.org

php tek 2006 in Orlando Florida Lukas Kahwe Smith smith@pooteeweet.org Database Schema Deployment php tek 2006 in Orlando Florida Lukas Kahwe Smith smith@pooteeweet.org Agenda: The Challenge Diff Tools ER Tools Synchronisation Tools Logging Changes XML Formats SCM Tools Install

More information

The Relational Model. Why Study the Relational Model? Relational Database: Definitions. Chapter 3

The Relational Model. Why Study the Relational Model? Relational Database: Definitions. Chapter 3 The Relational Model Chapter 3 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Why Study the Relational Model? Most widely used model. Vendors: IBM, Informix, Microsoft, Oracle, Sybase,

More information

SQL. by Steven Holzner, Ph.D. ALPHA. A member of Penguin Group (USA) Inc.

SQL. by Steven Holzner, Ph.D. ALPHA. A member of Penguin Group (USA) Inc. SQL by Steven Holzner, Ph.D. A ALPHA A member of Penguin Group (USA) Inc. Contents Part 1: Mastering the SQL Basics 1 1 Getting into SQL 3 Understanding Databases 4 Creating Tables Creating Rows and Columns

More information

CS2Bh: Current Technologies. Introduction to XML and Relational Databases. The Relational Model. The relational model

CS2Bh: Current Technologies. Introduction to XML and Relational Databases. The Relational Model. The relational model CS2Bh: Current Technologies Introduction to XML and Relational Databases Spring 2005 The Relational Model CS2 Spring 2005 (LN6) 1 The relational model Proposed by Codd in 1970. It is the dominant data

More information

The Relational Model. Why Study the Relational Model? Relational Database: Definitions

The Relational Model. Why Study the Relational Model? Relational Database: Definitions The Relational Model Database Management Systems, R. Ramakrishnan and J. Gehrke 1 Why Study the Relational Model? Most widely used model. Vendors: IBM, Microsoft, Oracle, Sybase, etc. Legacy systems in

More information

CSC 443 Data Base Management Systems. Basic SQL

CSC 443 Data Base Management Systems. Basic SQL CSC 443 Data Base Management Systems Lecture 6 SQL As A Data Definition Language Basic SQL SQL language Considered one of the major reasons for the commercial success of relational databases SQL Structured

More information

CS143 Notes: Views & Authorization

CS143 Notes: Views & Authorization CS143 Notes: Views & Authorization Book Chapters (4th) Chapter 4.7, 6.5-6 (5th) Chapter 4.2, 8.6 (6th) Chapter 4.4, 5.3 Views What is a view? A virtual table created on top of other real tables Almost

More information

SQL - QUICK GUIDE. Allows users to access data in relational database management systems.

SQL - QUICK GUIDE. Allows users to access data in relational database management systems. http://www.tutorialspoint.com/sql/sql-quick-guide.htm SQL - QUICK GUIDE Copyright tutorialspoint.com What is SQL? SQL is Structured Query Language, which is a computer language for storing, manipulating

More information

Chapter 9 Java and SQL. Wang Yang wyang@njnet.edu.cn

Chapter 9 Java and SQL. Wang Yang wyang@njnet.edu.cn Chapter 9 Java and SQL Wang Yang wyang@njnet.edu.cn Outline Concern Data - File & IO vs. Database &SQL Database & SQL How Connect Java to SQL - Java Model for Database Java Database Connectivity (JDBC)

More information

Structure101g SQL Flavor

Structure101g SQL Flavor Structure101g SQL Flavor Structure101g SQL Flavor Structure101g SQL Flavor Tejas Software Inc. (C) 2010 2 Structure101g SQL Flavor 1. Description... 1 2. Installation Steps... 2 3. Flavor Usage Instructions...

More information

ETL Overview. Extract, Transform, Load (ETL) Refreshment Workflow. The ETL Process. General ETL issues. MS Integration Services

ETL Overview. Extract, Transform, Load (ETL) Refreshment Workflow. The ETL Process. General ETL issues. MS Integration Services ETL Overview Extract, Transform, Load (ETL) General ETL issues ETL/DW refreshment process Building dimensions Building fact tables Extract Transformations/cleansing Load MS Integration Services Original

More information

Commercial Database Software Development- A review.

Commercial Database Software Development- A review. Commercial Database Software Development- A review. A database software has wide applications. A database software is used in almost all the organizations. Over 15 years many tools have been developed

More information

Maintaining Stored Procedures in Database Application

Maintaining Stored Procedures in Database Application Maintaining Stored Procedures in Database Application Santosh Kakade 1, Rohan Thakare 2, Bhushan Sapare 3, Dr. B.B. Meshram 4 Computer Department VJTI, Mumbai 1,2,3. Head of Computer Department VJTI, Mumbai

More information

Procedural Extension to SQL using Triggers. SS Chung

Procedural Extension to SQL using Triggers. SS Chung Procedural Extension to SQL using Triggers SS Chung 1 Content 1 Limitations of Relational Data Model for performing Information Processing 2 Database Triggers in SQL 3 Using Database Triggers for Information

More information

In This Lecture. SQL Data Definition SQL SQL. Notes. Non-Procedural Programming. Database Systems Lecture 5 Natasha Alechina

In This Lecture. SQL Data Definition SQL SQL. Notes. Non-Procedural Programming. Database Systems Lecture 5 Natasha Alechina This Lecture Database Systems Lecture 5 Natasha Alechina The language, the relational model, and E/R diagrams CREATE TABLE Columns Primary Keys Foreign Keys For more information Connolly and Begg chapter

More information

Conventional Files versus the Database. Files versus Database. Pros and Cons of Conventional Files. Pros and Cons of Databases. Fields (continued)

Conventional Files versus the Database. Files versus Database. Pros and Cons of Conventional Files. Pros and Cons of Databases. Fields (continued) Conventional Files versus the Database Files versus Database File a collection of similar records. Files are unrelated to each other except in the code of an application program. Data storage is built

More information

DBMS / Business Intelligence, SQL Server

DBMS / Business Intelligence, SQL Server DBMS / Business Intelligence, SQL Server Orsys, with 30 years of experience, is providing high quality, independant State of the Art seminars and hands-on courses corresponding to the needs of IT professionals.

More information

ICAB4136B Use structured query language to create database structures and manipulate data

ICAB4136B Use structured query language to create database structures and manipulate data ICAB4136B Use structured query language to create database structures and manipulate data Release: 1 ICAB4136B Use structured query language to create database structures and manipulate data Modification

More information

Oracle Database 10g: Program with PL/SQL

Oracle Database 10g: Program with PL/SQL Oracle University Contact Us: Local: 1800 425 8877 Intl: +91 80 4108 4700 Oracle Database 10g: Program with PL/SQL Duration: 5 Days What you will learn This course introduces students to PL/SQL and helps

More information

CHAPTER 2 DATABASE MANAGEMENT SYSTEM AND SECURITY

CHAPTER 2 DATABASE MANAGEMENT SYSTEM AND SECURITY CHAPTER 2 DATABASE MANAGEMENT SYSTEM AND SECURITY 2.1 Introduction In this chapter, I am going to introduce Database Management Systems (DBMS) and the Structured Query Language (SQL), its syntax and usage.

More information

1 File Processing Systems

1 File Processing Systems COMP 378 Database Systems Notes for Chapter 1 of Database System Concepts Introduction A database management system (DBMS) is a collection of data and an integrated set of programs that access that data.

More information

T-SQL STANDARD ELEMENTS

T-SQL STANDARD ELEMENTS T-SQL STANDARD ELEMENTS SLIDE Overview Types of commands and statement elements Basic SELECT statements Categories of T-SQL statements Data Manipulation Language (DML*) Statements for querying and modifying

More information

SQL Data Definition. Database Systems Lecture 5 Natasha Alechina

SQL Data Definition. Database Systems Lecture 5 Natasha Alechina Database Systems Lecture 5 Natasha Alechina In This Lecture SQL The SQL language SQL, the relational model, and E/R diagrams CREATE TABLE Columns Primary Keys Foreign Keys For more information Connolly

More information

Duration Vendor Audience 5 Days Oracle Developers, Technical Consultants, Database Administrators and System Analysts

Duration Vendor Audience 5 Days Oracle Developers, Technical Consultants, Database Administrators and System Analysts D80186GC10 Oracle Database: Program with Summary Duration Vendor Audience 5 Days Oracle Developers, Technical Consultants, Database Administrators and System Analysts Level Professional Technology Oracle

More information

IENG2004 Industrial Database and Systems Design. Microsoft Access I. What is Microsoft Access? Architecture of Microsoft Access

IENG2004 Industrial Database and Systems Design. Microsoft Access I. What is Microsoft Access? Architecture of Microsoft Access IENG2004 Industrial Database and Systems Design Microsoft Access I Defining databases (Chapters 1 and 2) Alison Balter Mastering Microsoft Access 2000 Development SAMS, 1999 What is Microsoft Access? Microsoft

More information

Introduction to Databases

Introduction to Databases Page 1 of 5 Introduction to Databases An introductory example What is a database? Why do we need Database Management Systems? The three levels of data abstraction What is a Database Management System?

More information

3. Relational Model and Relational Algebra

3. Relational Model and Relational Algebra ECS-165A WQ 11 36 3. Relational Model and Relational Algebra Contents Fundamental Concepts of the Relational Model Integrity Constraints Translation ER schema Relational Database Schema Relational Algebra

More information

Database Schema Deployment. Lukas Smith - lukas@liip.ch CodeWorks 2009 - PHP on the ROAD

Database Schema Deployment. Lukas Smith - lukas@liip.ch CodeWorks 2009 - PHP on the ROAD Database Schema Deployment Lukas Smith - lukas@liip.ch CodeWorks 2009 - PHP on the ROAD Agenda The Challenge ER Tools Diff Tools Data synchronisation Tools Logging Changes XML Formats SCM Tools Manual

More information

MySQL for Beginners Ed 3

MySQL for Beginners Ed 3 Oracle University Contact Us: 1.800.529.0165 MySQL for Beginners Ed 3 Duration: 4 Days What you will learn The MySQL for Beginners course helps you learn about the world's most popular open source database.

More information

Virtual Private Database Features in Oracle 10g.

Virtual Private Database Features in Oracle 10g. Virtual Private Database Features in Oracle 10g. SAGE Computing Services Customised Oracle Training Workshops and Consulting. Christopher Muir Senior Systems Consultant Agenda Modern security requirements

More information

Geodatabase Programming with SQL

Geodatabase Programming with SQL DevSummit DC February 11, 2015 Washington, DC Geodatabase Programming with SQL Craig Gillgrass Assumptions Basic knowledge of SQL and relational databases Basic knowledge of the Geodatabase We ll hold

More information

3.GETTING STARTED WITH ORACLE8i

3.GETTING STARTED WITH ORACLE8i Oracle For Beginners Page : 1 3.GETTING STARTED WITH ORACLE8i Creating a table Datatypes Displaying table definition using DESCRIBE Inserting rows into a table Selecting rows from a table Editing SQL buffer

More information

Basic Concepts of Database Systems

Basic Concepts of Database Systems CS2501 Topic 1: Basic Concepts 1.1 Basic Concepts of Database Systems Example Uses of Database Systems - account maintenance & access in banking - lending library systems - airline reservation systems

More information

Database Systems. Lecture 1: Introduction

Database Systems. Lecture 1: Introduction Database Systems Lecture 1: Introduction General Information Professor: Leonid Libkin Contact: libkin@ed.ac.uk Lectures: Tuesday, 11:10am 1 pm, AT LT4 Website: http://homepages.inf.ed.ac.uk/libkin/teach/dbs09/index.html

More information

news from Tom Bacon about Monday's lecture

news from Tom Bacon about Monday's lecture ECRIC news from Tom Bacon about Monday's lecture I won't be at the lecture on Monday due to the work swamp. The plan is still to try and get into the data centre in two weeks time and do the next migration,

More information

Driver for JDBC Implementation Guide

Driver for JDBC Implementation Guide www.novell.com/documentation Driver for JDBC Implementation Guide Identity Manager 4.0.2 January 2014 Legal Notices Novell, Inc. makes no representations or warranties with respect to the contents or use

More information

SQL Server An Overview

SQL Server An Overview SQL Server An Overview SQL Server Microsoft SQL Server is designed to work effectively in a number of environments: As a two-tier or multi-tier client/server database system As a desktop database system

More information

Managing Objects with Data Dictionary Views. Copyright 2006, Oracle. All rights reserved.

Managing Objects with Data Dictionary Views. Copyright 2006, Oracle. All rights reserved. Managing Objects with Data Dictionary Views Objectives After completing this lesson, you should be able to do the following: Use the data dictionary views to research data on your objects Query various

More information

5.1 Database Schema. 5.1.1 Schema Generation in SQL

5.1 Database Schema. 5.1.1 Schema Generation in SQL 5.1 Database Schema The database schema is the complete model of the structure of the application domain (here: relational schema): relations names of attributes domains of attributes keys additional constraints

More information

SQL Tables, Keys, Views, Indexes

SQL Tables, Keys, Views, Indexes CS145 Lecture Notes #8 SQL Tables, Keys, Views, Indexes Creating & Dropping Tables Basic syntax: CREATE TABLE ( DROP TABLE ;,,..., ); Types available: INT or INTEGER REAL or FLOAT CHAR( ), VARCHAR( ) DATE,

More information

Partitioning under the hood in MySQL 5.5

Partitioning under the hood in MySQL 5.5 Partitioning under the hood in MySQL 5.5 Mattias Jonsson, Partitioning developer Mikael Ronström, Partitioning author Who are we? Mikael is a founder of the technology behind NDB

More information

Oracle Database 12c: Introduction to SQL Ed 1.1

Oracle Database 12c: Introduction to SQL Ed 1.1 Oracle University Contact Us: 1.800.529.0165 Oracle Database 12c: Introduction to SQL Ed 1.1 Duration: 5 Days What you will learn This Oracle Database: Introduction to SQL training helps you write subqueries,

More information

The Entity-Relationship Model

The Entity-Relationship Model The Entity-Relationship Model 221 After completing this chapter, you should be able to explain the three phases of database design, Why are multiple phases useful? evaluate the significance of the Entity-Relationship

More information

Part A: Data Definition Language (DDL) Schema and Catalog CREAT TABLE. Referential Triggered Actions. CSC 742 Database Management Systems

Part A: Data Definition Language (DDL) Schema and Catalog CREAT TABLE. Referential Triggered Actions. CSC 742 Database Management Systems CSC 74 Database Management Systems Topic #0: SQL Part A: Data Definition Language (DDL) Spring 00 CSC 74: DBMS by Dr. Peng Ning Spring 00 CSC 74: DBMS by Dr. Peng Ning Schema and Catalog Schema A collection

More information

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: Business rules, constraints & triggers. 3. marts 2005

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: Business rules, constraints & triggers. 3. marts 2005 Databasesystemer, forår 2005 IT Universitetet i København Forelæsning 3: Business rules, constraints & triggers. 3. marts 2005 Forelæser: Rasmus Pagh Today s lecture Constraints and triggers Uniqueness

More information

database abstraction layer database abstraction layers in PHP Lukas Smith BackendMedia smith@backendmedia.com

database abstraction layer database abstraction layers in PHP Lukas Smith BackendMedia smith@backendmedia.com Lukas Smith database abstraction layers in PHP BackendMedia 1 Overview Introduction Motivation PDO extension PEAR::MDB2 Client API SQL syntax SQL concepts Result sets Error handling High level features

More information

Microsoft SQL Server Security & Auditing. March 23, 2011 ISACA Chapter Meeting

Microsoft SQL Server Security & Auditing. March 23, 2011 ISACA Chapter Meeting Microsoft SQL Server Security & Auditing March 23, 2011 ISACA Chapter Meeting Agenda Introduction SQL Server Product Description SQL Security Basics Security System Views Evolution of Tool Set for Auditing

More information

Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification

Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5 Outline More Complex SQL Retrieval Queries

More information

New SQL Features in Firebird 3

New SQL Features in Firebird 3 New SQL Features in Firebird 3 Sponsors! Whats new in Firebird 3 Common SQL Full syntax of MERGE statement (per SQL 2008) MERGE... RETURNING Window (analytical) functions SUBSTRING with regular expressions

More information

Oracle Database 10g Express

Oracle Database 10g Express Oracle Database 10g Express This tutorial prepares the Oracle Database 10g Express Edition Developer to perform common development and administrative tasks of Oracle Database 10g Express Edition. Objectives

More information

CSE 530A Database Management Systems. Introduction. Washington University Fall 2013

CSE 530A Database Management Systems. Introduction. Washington University Fall 2013 CSE 530A Database Management Systems Introduction Washington University Fall 2013 Overview Time: Mon/Wed 7:00-8:30 PM Location: Crow 206 Instructor: Michael Plezbert TA: Gene Lee Websites: http://classes.engineering.wustl.edu/cse530/

More information

CSI 2132 Lab 3. Outline 09/02/2012. More on SQL. Destroying and Altering Relations. Exercise: DROP TABLE ALTER TABLE SELECT

CSI 2132 Lab 3. Outline 09/02/2012. More on SQL. Destroying and Altering Relations. Exercise: DROP TABLE ALTER TABLE SELECT CSI 2132 Lab 3 More on SQL 1 Outline Destroying and Altering Relations DROP TABLE ALTER TABLE SELECT Exercise: Inserting more data into previous tables Single-table queries Multiple-table queries 2 1 Destroying

More information

Netezza SQL Class Outline

Netezza SQL Class Outline Netezza SQL Class Outline CoffingDW education has been customized for every customer for the past 20 years. Our classes can be taught either on site or remotely via the internet. Education Contact: John

More information

Linas Virbalas Continuent, Inc.

Linas Virbalas Continuent, Inc. Linas Virbalas Continuent, Inc. Heterogeneous Replication Replication between different types of DBMS / Introductions / What is Tungsten (the whole stack)? / A Word About MySQL Replication / Tungsten Replicator:

More information

HP Quality Center. Upgrade Preparation Guide

HP Quality Center. Upgrade Preparation Guide HP Quality Center Upgrade Preparation Guide Document Release Date: November 2008 Software Release Date: November 2008 Legal Notices Warranty The only warranties for HP products and services are set forth

More information

SQL Server. 2012 for developers. murach's TRAINING & REFERENCE. Bryan Syverson. Mike Murach & Associates, Inc. Joel Murach

SQL Server. 2012 for developers. murach's TRAINING & REFERENCE. Bryan Syverson. Mike Murach & Associates, Inc. Joel Murach TRAINING & REFERENCE murach's SQL Server 2012 for developers Bryan Syverson Joel Murach Mike Murach & Associates, Inc. 4340 N. Knoll Ave. Fresno, CA 93722 www.murach.com murachbooks@murach.com Expanded

More information

Zero Downtime Deployments with Database Migrations. Bob Feldbauer twitter: @bobfeldbauer email: bob.feldbauer@timgroup.com

Zero Downtime Deployments with Database Migrations. Bob Feldbauer twitter: @bobfeldbauer email: bob.feldbauer@timgroup.com Zero Downtime Deployments with Database Migrations Bob Feldbauer twitter: @bobfeldbauer email: bob.feldbauer@timgroup.com Deployments Two parts to deployment: Application code Database schema changes (migrations,

More information

Guide to SQL Programming: SQL:1999 and Oracle Rdb V7.1

Guide to SQL Programming: SQL:1999 and Oracle Rdb V7.1 Guide to SQL Programming: SQL:1999 and Oracle Rdb V7.1 A feature of Oracle Rdb By Ian Smith Oracle Rdb Relational Technology Group Oracle Corporation 1 Oracle Rdb Journal SQL:1999 and Oracle Rdb V7.1 The

More information

Software Engineering Techniques

Software Engineering Techniques Software Engineering Techniques Low level design issues for programming-in-the-large. Software Quality Design by contract Pre- and post conditions Class invariants Ten do Ten do nots Another type of summary

More information

Database 10g Edition: All possible 10g features, either bundled or available at additional cost.

Database 10g Edition: All possible 10g features, either bundled or available at additional cost. Concepts Oracle Corporation offers a wide variety of products. The Oracle Database 10g, the product this exam focuses on, is the centerpiece of the Oracle product set. The "g" in "10g" stands for the Grid

More information

Database Query 1: SQL Basics

Database Query 1: SQL Basics Database Query 1: SQL Basics CIS 3730 Designing and Managing Data J.G. Zheng Fall 2010 1 Overview Using Structured Query Language (SQL) to get the data you want from relational databases Learning basic

More information

SQL Programming. CS145 Lecture Notes #10. Motivation. Oracle PL/SQL. Basics. Example schema:

SQL Programming. CS145 Lecture Notes #10. Motivation. Oracle PL/SQL. Basics. Example schema: CS145 Lecture Notes #10 SQL Programming Example schema: CREATE TABLE Student (SID INTEGER PRIMARY KEY, name CHAR(30), age INTEGER, GPA FLOAT); CREATE TABLE Take (SID INTEGER, CID CHAR(10), PRIMARY KEY(SID,

More information

The Relational Model. Ramakrishnan&Gehrke, Chapter 3 CS4320 1

The Relational Model. Ramakrishnan&Gehrke, Chapter 3 CS4320 1 The Relational Model Ramakrishnan&Gehrke, Chapter 3 CS4320 1 Why Study the Relational Model? Most widely used model. Vendors: IBM, Informix, Microsoft, Oracle, Sybase, etc. Legacy systems in older models

More information

Programming in postgresql with PL/pgSQL. Procedural Language extension to postgresql

Programming in postgresql with PL/pgSQL. Procedural Language extension to postgresql Programming in postgresql with PL/pgSQL Procedural Language extension to postgresql 1 Why a Programming Language? Some calculations cannot be made within a query (examples?) Two options: Write a program

More information

The first time through running an Ad Hoc query or Stored Procedure, SQL Server will go through each of the following steps.

The first time through running an Ad Hoc query or Stored Procedure, SQL Server will go through each of the following steps. SQL Query Processing The first time through running an Ad Hoc query or Stored Procedure, SQL Server will go through each of the following steps. 1. The first step is to Parse the statement into keywords,

More information

The Relational Model. Why Study the Relational Model?

The Relational Model. Why Study the Relational Model? The Relational Model Chapter 3 Instructor: Vladimir Zadorozhny vladimir@sis.pitt.edu Information Science Program School of Information Sciences, University of Pittsburgh 1 Why Study the Relational Model?

More information

Using SAS as a Relational Database

Using SAS as a Relational Database Using SAS as a Relational Database Yves DeGuire Statistics Canada Come out of the desert of ignorance to the OASUS of knowledge Introduction Overview of relational database concepts Why using SAS as a

More information

Oracle to MySQL Migration

Oracle to MySQL Migration to Migration Stored Procedures, Packages, Triggers, Scripts and Applications White Paper March 2009, Ispirer Systems Ltd. Copyright 1999-2012. Ispirer Systems Ltd. All Rights Reserved. 1 Introduction The

More information

Intermediate SQL C H A P T E R4. Practice Exercises. 4.1 Write the following queries in SQL:

Intermediate SQL C H A P T E R4. Practice Exercises. 4.1 Write the following queries in SQL: C H A P T E R4 Intermediate SQL Practice Exercises 4.1 Write the following queries in SQL: a. Display a list of all instructors, showing their ID, name, and the number of sections that they have taught.

More information

IT2305 Database Systems I (Compulsory)

IT2305 Database Systems I (Compulsory) Database Systems I (Compulsory) INTRODUCTION This is one of the 4 modules designed for Semester 2 of Bachelor of Information Technology Degree program. CREDITS: 04 LEARNING OUTCOMES On completion of this

More information

Triggers & Packages. {INSERT [OR] UPDATE [OR] DELETE}: This specifies the DML operation.

Triggers & Packages. {INSERT [OR] UPDATE [OR] DELETE}: This specifies the DML operation. Triggers & Packages An SQL trigger is a mechanism that automatically executes a specified PL/SQL block (referred to as the triggered action) when a triggering event occurs on the table. The triggering

More information

Oracle Database: Develop PL/SQL Program Units

Oracle Database: Develop PL/SQL Program Units Oracle University Contact Us: 1.800.529.0165 Oracle Database: Develop PL/SQL Program Units Duration: 3 Days What you will learn This Oracle Database: Develop PL/SQL Program Units course is designed for

More information

Logi Ad Hoc Reporting System Administration Guide

Logi Ad Hoc Reporting System Administration Guide Logi Ad Hoc Reporting System Administration Guide Version 11.2 Last Updated: March 2014 Page 2 Table of Contents INTRODUCTION... 4 Target Audience... 4 Application Architecture... 5 Document Overview...

More information

SQL Server Database Coding Standards and Guidelines

SQL Server Database Coding Standards and Guidelines SQL Server Database Coding Standards and Guidelines http://www.sqlauthority.com Naming Tables: Stored Procs: Triggers: Indexes: Primary Keys: Foreign Keys: Defaults: Columns: General Rules: Rules: Pascal

More information