16
Database Technology Topic 7: Triggers and Stored Procedures Olaf Harg [email protected]

Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

Database Technology

Topic 7: Triggers and Stored ProceduresOlaf [email protected]

Page 2: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

Triggers

Page 3: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

3Database TechnologyTopic 7: Triggers and Stored Procedures

What are Triggers?

● Specify actions to be performed by the DBMSwhen certain events and conditions occur

● Used to monitor the DB and enforce business rules– Raise an alarm (e.g., constraint violation)– Enforce a constraint (e.g., by updating related data)– Update derived data in (possibly some other) table

● Typically, triggers consist of three components:– Event: update operations that activate the trigger– Condition: determines if action should be executed– Action: specifies what to do (e.g., execute stored

procedure, perform sequence of SQL statements)

Page 4: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

4Database TechnologyTopic 7: Triggers and Stored Procedures

Example

● “Salaries cannot be increased by more than 10%.” The following trigger enforces this 10%-increase limit.

CREATE TRIGGER LimitSalaryTriggerBEFORE UPDATE ON EmployeeFOR EACH ROW WHEN ( NEW.Salary > 1.1 * OLD.Salary )SET NEW.Salary = 1.1 * OLD.Salary;

Page 5: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

5Database TechnologyTopic 7: Triggers and Stored Procedures

Using Triggers

● CREATE TRIGGER <name>{ BEFORE | AFTER } <event>ON <table name>FOR EACH ROW [ WHEN <condition> ]< trigger statement(s) >;

● SHOW TRIGGERS;● DROP TRIGGER <trigger name>;

Use OLD.<attr.name> torefer to an attribute of a

row before the eventUse NEW.<attr.name> to

refer to an attribute of arow after the event

[ INSERT | UPDATE | DELETE ]

Must be permanent table(not a view or a temporary table)

Page 6: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

6Database TechnologyTopic 7: Triggers and Stored Procedures

BEFORE versus AFTER

● BEFORE trigger activated by attempt to insert or to modify the row, regardless of whether the attempt subsequently succeeds

● AFTER trigger activated only if the BEFORE trigger (if any) and the row operation both execute successfully

● If error during either a BEFORE or an AFTER trigger, the entire statement that activated the trigger fails

Page 7: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

Stored Procedures

Page 8: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

8Database TechnologyTopic 7: Triggers and Stored Procedures

Stored Procedures – What and Why

● What are stored procedures?– Program modules stored in the DBMS– May be written in a general-purpose

programming language– Alternatively, made of SQL commands

(e.g., queries, update statements)

● Why is this useful?– Reduces duplication of effort if a database program

is needed by several applications– Reduce data transfer and communication cost

(assuming a client-server setting)– Can be used to check for complex constraints

Page 9: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

9Database TechnologyTopic 7: Triggers and Stored Procedures

Using Stored Procedures in SQL

● CREATE PROCEDURE <proc. name> ( <params> )<local declarations><procedure body>;

● CALL <proc. name> ( <argument list> );● DROP PROCEDURE [IF EXISTS] <proc. Name>;

● CREATE FUNCTION <function name> ( <params> )RETURNS <return type><local declarations><procedure body>;

Must containRETURN …;

[ IN | OUT | INOUT ] <param. name> <type>

Page 10: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

10Database TechnologyTopic 7: Triggers and Stored Procedures

Example

mysql> delimiter //

mysql> CREATE PROCEDURE showsalary(IN eid INT) -> BEGIN -> SELECT salary FROM emp WHERE id=eid; -> END; -> //

mysql> delimiter ;

mysql> CALL showsalary(1);+--------+| salary |+--------+| 10000 |+--------+

Page 11: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

11Database TechnologyTopic 7: Triggers and Stored Procedures

Another Example

mysql> delimiter //

mysql> CREATE PROCEDURE myproc(OUT param1 INT) -> BEGIN -> SELECT COUNT(*) INTO param1 FROM t; -> END;//

mysql> delimiter ;

mysql> CALL myproc(@a);

mysql> SELECT @a;+-----+| @a |+-----+| 3 |+-----+

!!!

Page 12: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

12Database TechnologyTopic 7: Triggers and Stored Procedures

SQL / Persistent Stored Modules

● SQL/PSM: a set of extensions to SQL– General-purpose programming constructs in SQL– Can be used to write stored procedures

● Lots of features– Conditional branching

• IF … THEN … [ELSE …] END IF;• CASE … WHEN … THEN … [ … ] END CASE;

– Looping• WHILE … DO … END WHILE;• REPEAT … UNTIL … END REPEAT;

– etc.

Page 13: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

13Database TechnologyTopic 7: Triggers and Stored Procedures

SQM/PSM Example

CREATE FUNCTION dept_size( dno INT ) RETURNS VARCHAR(7)

BEGIN

# number of employeesDECLARE n INT;

SELECT COUNT(*) INTO n FROM emp WHERE Dept=dno;

IF n > 25 THEN RETURN "large"ELSEIF n > 10 THEN RETURN "medium"ELSE RETURN "small"END IF;

END;//

!!!

Page 14: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

Summary

Page 15: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

15Database TechnologyTopic 7: Triggers and Stored Procedures

Summary

● Triggers: specify actions to be performed by DBMS when certain events and conditions occur– Used to monitor the DB, enforce business rules– Consist of event, condition, and action

● Stored procedures: program modules stored in DBMS– SQL commands– General-purpose programming constructs

Page 16: Database Technology Topic 7: Triggers and Stored …TDDD37/fo/DBTechnology07-2018.pdf3 Database Technology Topic 7: Triggers and Stored Procedures What are Triggers? Specify actions

www.liu.se