mysql 触发器 多条语句
时间: 2023-11-24 18:53:10 浏览: 94
MySQL触发器可以包含多条执行语句,可以使用BEGIN和END语句将多条语句组合成一个块。下面是一个示例,演示如何创建一个包含多条执行语句的触发器:
```mysql
CREATE TRIGGER `trg_example` AFTER INSERT ON `example_table`
FOR EACH ROW
BEGIN
-- 第一条执行语句
INSERT INTO `example_table2` (`col1`, `col2`) VALUES (NEW.`col1`, NEW.`col2`);
-- 第二条执行语句
UPDATE `example_table3` SET `col1` = NEW.`col1` WHERE `id` = NEW.`id`;
END;
```
上述示例中,创建了一个名为`trg_example`的触发器,当在`example_table`表中插入一行数据时,将会执行触发器中的两条语句。第一条语句将会向`example_table2`表中插入一行数据,第二条语句将会更新`example_table3`表中的一行数据。
相关问题
mysql触发器多语句
MySQL触发器是一种特殊的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预先定义好的SQL语句序列。触发器可以包含一条或多条SQL语句,用于执行数据验证、业务规则检查、数据审计或历史记录更新等功能。
创建一个多语句触发器的基本语法是这样的:
```sql
CREATE TRIGGER trigger_name
AFTER|BEFORE event_type ON table_name
FOR EACH ROW
BEGIN
-- 多条SQL语句,每个语句之间用分号隔开
SQL statement 1;
SQL statement 2;
...
END;
```
其中:
- `trigger_name`:是你给触发器起的名字。
- `event_type`:可以是`AFTER`表示操作完成后触发,或是`BEFORE`表示操作开始前触发。
- `table_name`:触发器关联的表名。
- `FOR EACH ROW`:表明每行数据操作都会单独触发一次。
例如,如果你想在一个表的插入后更新另一个表,并且如果插入失败则回滚,你可以这样做:
```sql
CREATE TRIGGER after_insert_trigger
AFTER INSERT ON my_table
FOR EACH ROW
BEGIN
UPDATE other_table SET column = NEW.column_value WHERE condition;
IF SQLSTATE <> '00000' THEN
ROLLBACK;
END IF;
END;
```
阅读全文