DELIMITER // 触发器在 MySQL 中的作用是什么?
最编程
2024-04-01 19:47:33
...
DELIMITER // 可以用于将语句的分号(;)更改为//。现在您可以在触发器中使用分号编写多个语句。
这是触发器的演示。在此示例中,每当您输入的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 或大于 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。
以上就是DELIMITER // 在 MySQL 的触发器中起什么作用?的详细内容,更多请关注php中文网其它相关文章!
推荐阅读
-
什么是数据库事物?为什么需要数据库事物,事物有哪些特征?事物的隔离级别是什么?-1.什么是数据库事务? 1.事务是作为一个逻辑单元执行的一系列操作。一个逻辑工作单元必须具备四个属性,即ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为事务: 原子性 2.事务必须是一个原子工作单元;它的数据修改要么全部执行,要么全部不执行。 一致性 3.事务完成时,所有数据必须保持一致。在相关数据库中,所有规则都必须适用于事务的修改,以保持所有数据的完整性。事务结束时,所有内部数据结构(如 B 树索引或双向链接表)必须正确无误。 隔离 4.并发事务的修改必须与其他并发事务的修改隔离。一个事务会在另一个并发事务修改之前或之后查看某一状态下的数据,而不会查看中间状态下的数据。这就是所谓的可序列化,因为它允许重新加载起始数据和重放一系列事务,从而使数据最终处于与原始事务执行时相同的状态。 持久性 5.事务完成后,它对系统的影响是永久性的。即使在系统发生故障的情况下,修改也会保留。 2. 为什么需要数据库事物,事物有哪些特征? 事物对数据库的作用是对数据进行一系列操作,要么全部成功,要么全部失败,防止出现中间状态,确保数据库中的数据始终处于正确、和谐的状态。 特征:原子性、一致性、隔离性、持久性,以及其他特征 原子性(Atomicity):所有操作在事务开始后,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出现错误时,会回滚到事务开始前的状态,所有操作就像没有发生一样。也就是说,事务是一个不可分割的整体,就像化学中的原子一样,是物质的基本单位。 一致性(Consistency):在事务开始之前和结束之后,数据库的完整性约束都没有被破坏。例如,如果 A 转钱给 B,A 不可能扣除这笔钱,但 B 却没有收到这笔钱。 隔离:在同一时间内,只允许一个事务请求相同的数据,不同事务之间没有干扰。例如,甲正在从一张银行卡上取款,在甲取款过程结束之前,乙不能向这张卡转账。 持久性(耐用性):事务完成后,事务对数据库的所有更新都将保存到数据库中,无法回滚 3.事务的隔离级别有哪些? 数据库事务有四种隔离级别,从低到高分别是未提交读取(Read uncommitted)、已提交读取(Read committed)、可重复读取(Repeatable read)、可序列化(Serializable)。此外,事务的并发操作中可能会出现脏读、不可重复读、幽灵读等情况。事务并发问题 脏读:事务 A 读取事务 B 更新的数据,然后事务 B 回滚操作,那么事务 A 读取的数据就是脏数据。 不可重复读取:事务 A 多次读取同一数据,事务 B 在事务 A 多次读取期间更新并提交数据,导致事务 A 多次读取同一数据时结果不一致。 幻影读取:系统管理员 A 将数据库中所有学生的具体分数改为 ABCDE 等级,但系统管理员 B 在此时插入了具体分数的记录,当系统管理员 A 更改结束后发现仍有一条记录未被更改,仿佛发生了幻觉,这称为幻影读取。 小结:不可重复读和幻读容易混淆,不可重复读侧重于修改,幻读侧重于增删。解决不可重复读问题只需锁定满足条件的行,解决幻读问题则需要锁定表 MySQL 事务隔离级别
-
hdfs 在 hadoop 中的作用是什么?
-
返回在 js 中的作用是什么?-return;将控件返回页面。
-
replace(/\//g, '') 在 js 中的作用是什么?
-
DELIMITER // 触发器在 MySQL 中的作用是什么?
-
使用和思考jmeter中固定定时器的影响 在对jmeter中固定定时器的使用和思考方面,我们可以考虑以下问题:固定定时器的作用是什么? 在最近的使用场景中,我们可以看到固定定时器的作用主要有两个方面:确保了一些请求的数据建立的先后顺序和在获取服务端某些数据之前加固定定时器以确保之前的请求已经在服务端生成了数据。 此外,固定定时器还可以控制请求的时间间隔,延迟请求到达服务器的时间,以模拟真实用户的行为。 在特定的场景需求下,我们可能不需要很大的tps,而是要控制特定的处理能力,并观察系统的稳定性。 除了固定定时器,jmeter中还有其他类型的定时器,例如高斯随机定时器、均匀随机定时器、固定吞吐量定时器、同步定时器等。 定时器是在每个采样器之前执行的,而不是之后。当执行一个采样器之前,当前作用域内的所有定时器都将被执行。如果希望定时器仅应用于某个采样器,则可以将定时器作为其子节点加入。 最后,我们需要思考一个问题:固定定时器对响应时间有影响吗?
-
在mysql中,unique唯一索引的作用 mysql中unique唯一索引的作用是