在 MySQL 的觸發器中,DELIMITER // 是什麼作用?


DELIMITER // 可以用來將語句的分隔符從分號 (;) 更改為 //。現在你可以在觸發器中使用多個帶分號的語句。

以下是觸發器的演示。在這個例子中,每當你輸入 EmployeeSalary 小於 1000 時,它將預設設定為 10000。

首先,讓我們建立一個表。建立表的查詢如下 -

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

建立表後,你需要在 insert 命令上建立一個觸發器。建立觸發器的查詢如下。

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 ;

現在你可以使用 insert 命令檢查觸發器。如果你插入 EmployeeSalary 小於 1000,那麼它不會報錯,但它會儲存我給定的預設值 10000。

插入記錄的查詢如下 -

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

現在使用 select 語句檢查表中的所有記錄。查詢如下。

mysql> select *from EmployeeTable;

以下是輸出結果。

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

如果你插入 1000 或大於 1000,那麼它只會顯示你的數字。我已經使用 truncate 命令刪除了表中的先前記錄。

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

在表中插入記錄的查詢。

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)

以下是使用 select 語句檢查表中所有記錄的查詢。

mysql> select *from EmployeeTable;

以下是輸出結果。

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

檢視上面的示例輸出,EmployeeSalary 大於或等於 1000。這將顯示你的工資。請記住,如果它小於 1000,則預設值為 10000。

更新時間: 2020-06-29

2K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告