Cú pháp Trigger BEFORE INSERT
DELIMITER //
CREATE TRIGGER afterinserttrigger
BEFORE INSERT ON DemoTable1
FOR EACH ROW
BEGIN
INSERT INTO DemoTable2 VALUES (10, 'Chris');
END; //
DELIMITER ;
Ví dụ hoàn chỉnh
1. Tạo bảng 1
mysql> create table DemoTable1 (
StudentId int,
StudentName varchar(40)
);
Query OK, 0 rows affected (0.69 sec)
2. Tạo bảng 2
mysql> create table DemoTable2(
Id int,
Name varchar(40)
);
Query OK, 0 rows affected (0.61 sec)
3. Tạo Trigger
mysql> DELIMITER //
mysql> create trigger afterinserttrigger before insert on DemoTable1
for each row
begin
insert into DemoTable2 values (10,'Chris');
end; //
Query OK, 0 rows affected (0.13 sec)
mysql> DELIMITER ;
4. Chèn vào bảng 1
mysql> insert into DemoTable1 values(1,'David'); Query OK, 1 row affected (0.21 sec)
5. Kiểm tra bảng 1
mysql> select * from DemoTable1;
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | David | +-----------+-------------+ 1 row in set (0.00 sec)
6. Kiểm tra bảng 2 (đã được chèn tự động)
mysql> select * from DemoTable2;
+------+-------+ | Id | Name | +------+-------+ | 10 | Chris | +------+-------+ 1 row in set (0.00 sec)
Lưu ý: Trigger chạy trong cùng transaction với câu lệnh kích hoạt. Nên dùng BEFORE INSERT nếu cần sửa dữ liệu mới, AFTER INSERT nếu chỉ ghi log.