Computer >> Máy Tính >  >> Lập trình >> MySQL

DELIMITER // làm gì trong Trigger trong MySQL?

DELIMITER // có thể được sử dụng để thay đổi câu lệnh từ dấu chấm phẩy (;) thành //. Giờ đây, bạn có thể viết nhiều câu lệnh với dấu chấm phẩy trong trình kích hoạt.

Đây là bản demo của các trình kích hoạt. Trong ví dụ này, bất cứ khi nào bạn nhập EmployeeSalary nhỏ hơn 1000 thì theo mặc định, nó sẽ được đặt thành 10000.

Đầu tiên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table EmployeeTable
-> (
-> EmployeeId int,
-> EmployeeName varchar(100),
-> EmployeeSalary float
-> );
Query OK, 0 rows affected (0.76 sec)

Sau khi tạo bảng, bạn cần tạo trình kích hoạt trên lệnh insert. Truy vấn để tạo trình kích hoạt như sau.

mysql> delimiter //
mysql> create trigger CheckSalary before insert on EmployeeTable
-> for each row if new.EmployeeSalary < 1000 then set
-> new.EmployeeSalary=10000;
-> end if;
-> //
Query OK, 0 rows affected (0.40 sec)
mysql> delimiter ;

Bây giờ bạn có thể kiểm tra trình kích hoạt bằng cách sử dụng lệnh chèn. Nếu bạn chèn EmployeeSalary nhỏ hơn 1000, thì nó không xuất hiện bất kỳ lỗi nào nhưng nó sẽ lưu trữ một giá trị mặc định mà tôi đã đưa ra là 10000.

Truy vấn để chèn bản ghi như sau -

mysql> insert into EmployeeTable values(1,'Carol',500);
Query OK, 1 row affected (0.25 sec)

Bây giờ hãy kiểm tra tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau.

mysql> select *from EmployeeTable;

Sau đây là kết quả.

+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 1          | Carol        | 10000          |
+------------+--------------+----------------+
1 row in set (0.00 sec)

Nếu bạn chèn 1000 hoặc lớn hơn 1000 thì nó sẽ chỉ hiển thị số của bạn. Tôi đã xóa bản ghi trước đó khỏi bảng bằng lệnh truncate.

mysql> truncate table EmployeeTable;
Query OK, 0 rows affected (1.44 sec)

Truy vấn để chèn bản ghi trong bảng.

mysql> insert into EmployeeTable values(2,'Bob',1000);
Query OK, 1 row affected (0.14 sec)

mysql> insert into EmployeeTable values(3,'Carol',2500);
Query OK, 1 row affected (0.19 sec)

Đây là truy vấn để kiểm tra tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.

mysql> select *from EmployeeTable;

Sau đây là kết quả.

+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 2          | Bob          | 1000           |
| 3          | Carol        | 2500           |
+------------+--------------+----------------+
2 rows in set (0.00 sec)

Nhìn vào kết quả đầu ra mẫu ở trên, EmployeeSalary lớn hơn hoặc bằng 1000. Điều này sẽ đưa ra mức lương của bạn. Hãy nhớ rằng, nếu nó nhỏ hơn 1000 thì giá trị mặc định được đặt thành 10000.