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

Triển khai Trigger MySQL: chèn bản ghi vào bảng 2 khi có INSERT vào bảng 1

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.