4 trigger


Published on

Published in: Technology, Health & Medicine
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

4 trigger

  1. 1. Hệ quản trị cơ sở dữ liệu Trigger Dư Phương Hạnh Bộ môn Hệ thống thông tin Khoa CNTT, trường Đại học Công nghệ Đại học Quốc gia Hanoi hanhdp@vnu.edu.vn
  2. 2. Outline     Introduction Create trigger Managing trigger Exercises Tài liệu tham khảo: http://www.mysqltutorial.org/mysql-triggers.aspx 2 Hệ quản trị CSDL @ BM HTTT
  3. 3. Introduction  Trigger is a set of SQL statements which is stored to be activated or fired when an event associating with a database table occurs. The event can be any event including INSERT, UPDATE and DELETE.  Sometimes a trigger is referred as a special kind of stored procedure in term of procedural code inside its body. The difference between a trigger and a stored procedure is that a trigger is activated or called when an event happens in a database table, a stored procedure must be called explicitly. 3 Hệ quản trị CSDL @ BM HTTT
  4. 4. Advantages  Trigger provides an alternative way to check integrity.  Trigger can catch the errors in business logic in the database level.  Trigger provides an alternative way to run scheduled tasks. With SQL trigger, you don’t have to wait to run the scheduled tasks. You can handle those tasks before or after changes being made to database tables.  SQL trigger is very useful when you use it to audit the changes of data in a database table. 4 Hệ quản trị CSDL @ BM HTTT
  5. 5. Disadvantages  Trigger only can provide extended validation and cannot replace all the validations. Some simple validations can be done in the application level. – For example, you can validate input check in the client side by using javascript or in the server side by server script using PHP or ASP.NET… 5 Hệ quản trị CSDL @ BM HTTT
  6. 6. Disadvantages  Triggers executes invisibly from client-application which connects to the database server so it is difficult to figure out what happen underlying database layer.  SQL Triggers run every updates made to the table therefore it adds workload to the database and cause system runs slower. 6 Hệ quản trị CSDL @ BM HTTT
  7. 7. Create trigger CREATE TRIGGER trig_name trig_time trig_event ON table_name FOR EACH ROW BEGIN ... END Trig_time: BEFORE, AFTER Trig_even: INSERT, UPDATE and DELETE – A trigger only can fire with one event. To define trigger which are fired by multiple events, you have to define multiple triggers, one for each event. 7 Hệ quản trị CSDL @ BM HTTT
  8. 8. Create trigger  MySQL gives you OLD and NEW keyword to help you write trigger more efficient. – The OLD keyword refers to the existing row before you update data – The NEW keyword refers to the new row after you update data.  When you create a trigger in MySQL, its definition stores in the file with extension .TRG in a database folder with specific name as follows: /data_folder/database_name/table_name.trg 8 Hệ quản trị CSDL @ BM HTTT
  9. 9. Examples  Consider that we want to keep the changes of employee's data in another table whenever data of an employee's record changed.  In order to do so you create a new table called employees_audit  to keep track the changes as follows: 9 Hệ quản trị CSDL @ BM HTTT
  10. 10. Examples CREATE TABLE employees_audit ( id int(11) NOT NULL AUTO_INCREMENT, employeeNumber int(11) NOT NULL, lastname varchar(50) NOT NULL, changedon datetime DEFAULT NULL, action varchar(50) DEFAULT NULL, PRIMARY KEY (id) ) 10 Hệ quản trị CSDL @ BM HTTT
  11. 11. Examples DELIMITER $$ CREATE TRIGGER before_employee_update BEFORE UPDATE ON employees FOR EACH ROW BEGIN INSERT INTO employees_audit SET action = 'update', employeeNumber = OLD.employeeNumber, lastname = OLD.lastname, changedon = NOW(); END$$ DELIMITER ; 11 Hệ quản trị CSDL @ BM HTTT
  12. 12. Managing trigger  Trigger is stored as plain text file in the database folder as follows: /data_folder/database_name/table_name.trg, with any plain text editor such as notepad you can view it.  MySQL provides you another way to view the trigger by executing SQL statement: SELECT * FROM Information_Schema.Trigger WHERE Trigger_schema = 'database_name' AND Trigger_name = 'trigger_name'; 12 Hệ quản trị CSDL @ BM HTTT
  13. 13. Managing trigger  If you want to retrieve all triggers associated with a database just executing the following SQL statement: SELECT * FROM Information_Schema.Trigger WHERE Trigger_schema = 'database_name';  To find all triggers associating with a database table, just executing the following SQL statement: SELECT * FROM Information_Schema.Trigger WHERE Trigger_schema = 'database_name' AND Event_object_table = 'table_name'; 13 Hệ quản trị CSDL @ BM HTTT
  14. 14. Managing trigger  In MySQL you are not only able to view the trigger but also remove an existing trigger. To remove a trigger you can use the SQL statement DROP TRIGGER as follows: DROP TRIGGER table_name.trigger_name  To modify a trigger, you have to delete it first and recreate it. MySQL doesn't provide you SQL statement to alter an existing trigger like altering other database objects such as tables or stored procedures. 14 Hệ quản trị CSDL @ BM HTTT
  15. 15. Exercises 1. Viết một trigger thực hiện công việc sau: Với những đơn hàng trị giá >1.000.000 thì chiết khấu 5%. 2. Viết trigger đảm bảo rằng: nếu số lượng hàng hoá khách hàng đặt mua lớn hơn số lượng hàng còn trong kho thì đưa ra thông báo ‘không đủ lượng hàng theo yêu cầu’, sau đó huỷ bỏ dòng đặt hàng đối với mặt hàng này. 15 Hệ quản trị CSDL @ BM HTTT