MySQL 触发器语法
时间: 2023-11-01 14:08:29 浏览: 121
MySQL 触发器是一种在数据库表上自动执行的存储过程。它们可以在插入、更新或删除表中的数据时触发,并且可以执行一系列预定义的操作。以下是MySQL触发器的基本语法:
```sql
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN
-- 触发器执行的操作语句
END;
```
其中,关键字解释如下:
- `CREATE TRIGGER`:创建触发器的语法。
- `trigger_name`:触发器的名称,应该是唯一的。
- `BEFORE` 或 `AFTER`:指定触发器在触发事件前还是之后执行。
- `INSERT`、`UPDATE` 或 `DELETE`:指定触发器在哪个事件上触发。
- `table_name`:要应用触发器的表名。
- `FOR EACH ROW`:指定对于每个受影响的行都要执行触发器。
- `BEGIN ... END`:触发器执行的操作语句块。
在 `BEGIN` 和 `END` 之间,你可以使用 SQL 语句编写触发器的操作逻辑,例如插入新的数据、更新其他表、记录日志等。在触发器中,你可以使用 `NEW` 关键字引用正在被插入、更新或删除的新数据行。
请注意,MySQL触发器只能应用于支持触发器的存储引擎(如 InnoDB)。
相关问题
Mysql触发器语法
MySQL触发器是一种在特定事件发生时自动执行的数据库对象。下面是MySQL触发器的基本语法:
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
BEGIN
-- 触发器执行的SQL语句
END;
其中,trigger_name 是触发器的名称,可以根据实际需求自定义。BEFORE 或 AFTER 关键字指定触发器是在事件之前还是之后执行。INSERT、UPDATE 和 DELETE 是触发器要监听的事件类型。table_name 是触发器所属的表名。
FOR EACH ROW 关键字表示每次执行触发器时都会针对触发事件中的每一行执行相应的操作。
在 BEGIN 和 END 之间,可以编写触发器要执行的SQL语句,可以包含条件判断、更新数据等操作。
例如,下面是一个创建在表 `orders` 上的 `AFTER INSERT` 触发器的示例:
CREATE TRIGGER after_order_insert
AFTER INSERT
ON orders
FOR EACH ROW
BEGIN
-- 触发器执行的SQL语句
INSERT INTO order_logs(order_id, log_message)
VALUES(NEW.order_id, 'New order created');
END;
该触发器会在 `orders` 表上进行插入操作后执行,每次插入一条新的订单记录时,会将相应的订单日志插入到 `order_logs` 表中。
请注意上述示例中使用了 `NEW.order_id` 来引用插入的新行的 `order_id` 值。`NEW` 是一个特殊的关键字,代表了触发器所关联的事件中的新增行。
以上是MySQL触发器的基本语法,根据实际需求,你可以根据不同的事件和操作编写相应的触发器逻辑。
MySQL触发器语法应用
MySQL触发器是一种特殊的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器可以帮助我们维护数据一致性,执行业务规则,或者记录操作日志。下面是创建基本触发器的基本语法:
```sql
CREATE TRIGGER trigger_name
-- 触发事件 (BEFORE | AFTER) INSERT | UPDATE | DELETE
ON table_name
FOR EACH ROW
BEGIN
-- 触发器执行的SQL语句
-- 示例:如果更新年龄字段,则检查新值是否大于18
IF NEW.age > 18 THEN
SET NEW.status = 'adult';
END IF;
END;
```
在这个例子中:
- `trigger_name` 是你给触发器起的名字。
- `table_name` 是你想在哪个表上设置触发器。
- `BEFORE` 或 `AFTER` 指定操作何时触发(在修改前或修改后)。
- `FOR EACH ROW` 表示对于每一行影响的数据都会执行一次触发器。
创建触发器之后,当满足指定条件时,触发器里的SQL语句会自动运行。注意,触发器可以包含复杂的逻辑,但它们通常用于简单的任务,避免过度设计。
阅读全文