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

DELIMITER // trong Trigger MySQL có tác dụng gì?

DELIMITER // thay đổi ký tự phân cách câu lệnh từ dấu chấm phẩy (;) sang //. Điều này cho phép viết nhiều câu lệnh kết thúc bằng ; bên trong trigger mà không bị thực thi sớm.

Ví dụ: Trigger kiểm tra lương nhân viên. Nếu EmployeeSalary < 1000 thì mặc định gán = 10000.

Tạo bảng:

mysql> CREATE TABLE EmployeeTable (
    -> EmployeeId INT,
    -> EmployeeName VARCHAR(100),
    -> EmployeeSalary FLOAT
    -> );

Tạo trigger với DELIMITER //:

mysql> DELIMITER //
mysql> CREATE TRIGGER CheckSalary BEFORE INSERT ON EmployeeTable
    -> FOR EACH ROW
    -> BEGIN
    ->   IF NEW.EmployeeSalary < 1000 THEN
    ->     SET NEW.EmployeeSalary = 10000;
    ->   END IF;
    -> END //
Query OK, 0 rows affected
mysql> DELIMITER ;

Kiểm tra: chèn lương 500 (< 1000):

mysql> INSERT INTO EmployeeTable VALUES (1, 'Carol', 500);
mysql> SELECT * FROM EmployeeTable;
+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 1          | Carol        | 10000          |
+------------+--------------+----------------+

Chèn lương 1000 và 2500 (≥ 1000):

mysql> TRUNCATE TABLE EmployeeTable;
mysql> INSERT INTO EmployeeTable VALUES (2, 'Bob', 1000), (3, 'Carol', 2500);
mysql> SELECT * FROM EmployeeTable;
+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 2          | Bob          | 1000           |
| 3          | Carol        | 2500           |
+------------+--------------+----------------+

Trigger hoạt động đúng: lương < 1000 được gán mặc định 10000.