Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách tạo và sử dụng trigger MySQL

Để tạo trigger mới, dùng câu lệnh CREATE TRIGGER. Cú pháp:

CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN ... END;

Giải thích:

  • trigger_name: tên trigger, đặt sau CREATE TRIGGER. Quy ước đặt tên: [trigger_time]_[table_name]_[trigger_event], ví dụ: before_student_update, after_student_insert.
  • trigger_time: thời điểm kích hoạt, BEFORE hoặc AFTER. Bắt buộc chỉ định. Dùng BEFORE nếu muốn xử lý trước thay đổi, AFTER nếu sau thay đổi.
  • trigger_event: INSERT, UPDATE, hoặc DELETE. Sự kiện này kích hoạt trigger. Một trigger chỉ được kích hoạt bởi một sự kiện. Muốn nhiều sự kiện, tạo nhiều trigger.
  • table_name: tên bảng. Trigger luôn gắn với một bảng cụ thể. Không có bảng thì trigger không tồn tại, nên chỉ định sau từ khóa ON.
  • BEGIN...END: khối định nghĩa logic cho trigger.

Ví dụ

Tạo bảng Student_age:

mysql> Create table Student_age(age INT, Name Varchar(35));
Query OK, 0 rows affected (0.80 sec)

Tạo trigger tự động gán age = 0 nếu chèn age < 0:

mysql> DELIMITER //
mysql> Create Trigger before_inser_studentage BEFORE INSERT ON student_age FOR EACH ROW BEGIN IF NEW.age < 0 THEN SET NEW.age = 0; END IF; END //
Query OK, 0 rows affected (0.30 sec)

Kích hoạt trigger:

mysql> INSERT INTO Student_age(age, Name) values(30, 'Rahul');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO Student_age(age, Name) values(-10, 'Harshit');
Query OK, 1 row affected (0.11 sec)
mysql> Select * from Student_age;
+------+---------+
| age  | Name    |
+------+---------+
| 30   | Rahul   |
| 0    | Harshit |
+------+---------+
2 rows in set (0.00 sec)

Kết quả cho thấy khi chèn giá trị âm, trigger tự động gán thành 0. Đây là ví dụ trigger với trigger_event = INSERT và trigger_time = BEFORE.