mysql触发器怎么创建
原创MySQL触发器是一种特殊的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)执行前后自动执行预定义的SQL语句。这种功能让数据一致性、业务逻辑自动化成为或许。以下是怎样在MySQL中创建触发器的步骤:
创建触发器的基本语法
```sql
CREATE TRIGGER trigger_name
BEFORE|AFTER [EVENT]
ON table_name
FOR EACH ROW
BEGIN
-- 触发器执行的SQL语句
END;
```
- `trigger_name`: 你为触发器指定的名字。
- `BEFORE` 或 `AFTER`: 即触发器是在操作前执行(BEFORE)还是操作后执行(AFTER)。
- `[EVENT]`: 可选的,用于指定触发事件,如INSERT、UPDATE、DELETE等。
- `table_name`: 触发器相关性的表名。
- `FOR EACH ROW`: 指定触发器对于每一行操作都会执行一次。
创建一个INSERT触发器的例子
```sql
CREATE TRIGGER insert_user_log
AFTER INSERT ON users
FOR EACH ROW
BEGIN
INSERT INTO user_logs (user_id, action, timestamp)
VALUES (NEW.user_id, 'INSERT', NOW());
END;
```
在这个例子中,每当在`users`表中插入新记录时,`insert_user_log`触发器会自动将新用户的ID、操作类型(INSERT)和当前时间戳记录到`user_logs`表中。
创建一个UPDATE触发器的例子
```sql
CREATE TRIGGER update_salary_log
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
IF NEW.salary > OLD.salary THEN
SET NEW.salary_change = NEW.salary - OLD.salary;
END IF;
END;
```
此触发器在更新`employees`表中的薪水时,如果新的薪水大于旧的薪水,会计算出薪水的变化,并将其保存在`salary_change`字段中。
注意:在实际应用中,需要谨慎使用触发器,由于它们或许会增多数据库的复杂化性并影响性能。在设计触发器时,应确保它们符合业务需求且不会引入不必要的冗余和复杂化性。