在 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+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告