MySQL 触发器中 DELIMITER // 是什么意思?
DELIMITER // 可以用来将语句中的分号 (;) 替换成 //。现在你可以在一个触发器中写多条带分号的语句了。
下面是关于触发器的 DEMO。在这个例子中,当你输入的 EmployeeSalary 小于 1000 时,它将默认设置为10000。
首先,让我们创建一个表。创建表的查询语句如下 –
mysql> create table EmployeeTable
-> (
-> EmployeeId int,
-> EmployeeName varchar(100),
-> EmployeeSalary float
-> );
Query OK, 0 rows affected (0.76 sec)
创建完一个表后,你需要对插入指令创建一个触发器。创建触发器的查询语句如下。
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 ;
现在你可以使用插入指令来检查触发器了。如果你插入的 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 或更大的数值,那么它将仅显示这个数值。我使用 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。
阅读更多:MySQL 教程