当前位置:网站首页>[MySQL] detailed explanation of trigger content of database advanced
[MySQL] detailed explanation of trigger content of database advanced
2022-07-07 08:47:00 【Xiaohuang Xiaohuang is no longer confused】
Personal home page : Huang Xiaohuang's blog home page
️ Stand by me : give the thumbs-up Collection Focus on
Maxim : Only one step at a time can we accept the so-called luckThis article is from the column :MySQL8.0 Learning notes
This article refers to the video :MySQL Database complete tutorial
Welcome to the support subscription column ️
List of articles
1 Trigger Overview
Trigger introduction :
- trigger , Is a special stored procedure . A trigger, like a stored procedure, is a function that can perform a specific function , Stored on the database server SQL fragment . But the trigger does not need to call , When executing DML This will be triggered automatically during operation SQL Execution of fragments , No manual call required .
- stay MySQL in , Only execute insert、delete、update The execution of the trigger can only be triggered when the operation ;
- This feature of trigger can help to ensure the integrity of data in database , logging , Data verification and other operations ;
- Use the alias OLD And NEW To reference the record content where the trigger changes , This is similar to other databases . Now the trigger is still Only row level triggering is supported , Statement level triggering is not supported .
Schematic diagram of trigger :
Triggers are defined on the table , Attach to table .
Triggers are defined , You need to specify the :
- What conditions trigger ? Insert 、 Delete 、 to update ?
- When to trigger ? Before or after addition, deletion and modification ?
- Trigger frequency , For each line .
2 The basic operation of trigger
2.1 Create trigger
1. Create a trigger with only one execution statement :
create trigger Trigger Name before|after Triggering event
on Table name for each row
Execute statement ;
2. Create a trigger with multiple execution statements :
create trigger Trigger Name before|after Triggering event
on Table name for each row
begin
Execute statement list
end;
2.2 Trigger operation instance
First, prepare the data , Define two tables user And user_logs, Record the user registration information and user operation log respectively . Hope to be user When something changes ,user_logs Change automatically ( It is realized by trigger ). The relevant codes for data preparation are as follows :
CREATE DATABASE IF NOT EXISTS mydatabase_tigger;
USE mydatabase_tigger;
-- User table creation
CREATE TABLE user(
uid INT PRIMARY KEY ,
username VARCHAR(50) NOT NULL ,
password VARCHAR(50) NOT NULL
);
-- User information operation log table
CREATE TABLE user_logs(
id INT PRIMARY KEY AUTO_INCREMENT,
time TIMESTAMP,
log_text VARCHAR(255)
);
- If you want to give user When adding information to the table ,user_logs The table automatically adds a row of data , A trigger is defined in the following code trigger_test01 To meet the needs , The relevant codes and results are as follows :
CREATE TRIGGER trigger_test01
AFTER INSERT
ON user
FOR EACH ROW
INSERT INTO user_logs
VALUES (NULL, NOW(), ' New users add ');
INSERT INTO user VALUES (1, 'nezuko', '123456');
- When user When the table data is modified , Automatically in user_logs Add logging ., A trigger is defined in the following code trigger_test02 To meet the needs , The relevant codes and results are as follows :
DELIMITER $$
CREATE TRIGGER trigger_test02
BEFORE UPDATE
ON user
FOR EACH ROW
BEGIN
INSERT INTO user_logs VALUES (NULL, NOW(), ' User information is modified ');
END $$
DELIMITER ;
UPDATE user SET password = '111111' WHERE uid = 1;
You can see user The password in the table has been changed , The record of modification information is successfully added to the log table .
3 NEW And OLD
3.1 Why NEW And OLD?
MySQL It defines NEW and OLD, Used to indicate that the trigger is in the table , Which row of data triggered the trigger , To refer to the changed record content in the trigger , See the following table for details :
Trigger Type | Trigger Type NEW And OLD Use |
---|---|
INSERT Type trigger | NEW Indicates the data to be added or added |
UPDATE Type trigger | OLD Represents the data before modification ,NEW Indicates the data to be or have been modified |
DELETE Type trigger | OLD Data that will be or has been deleted |
Usage method :
NEW.columnName(columnName A column name representing the corresponding data )
What kind of requirements will be used NEW and OLD Well ?
In the case illustrated above , We modify user The password in the table , to user_logs Modification information is added to the table . But it only prompts the modified information , There is no indication that . If , It is necessary to indicate the password before modification or the password after modification in the information , You need to use the OLD and NEW Used for triggers to reference data !
3.2 NEW And OLD example
Defining triggers trigger_test03, You can give user_logs Insert modification information , Show the user's password before and after modification . The relevant codes and results are as follows :
DELIMITER $$
CREATE TRIGGER trigger_test03
BEFORE UPDATE
ON user
FOR EACH ROW
BEGIN
INSERT INTO user_logs VALUES (NULL, NOW(), CONCAT(' User information is modified , The password before modification is ', OLD.password, ', Modified for ', NEW.password));
END $$
DELIMITER ;
UPDATE user SET password = '99999999' WHERE uid = 1;
If you want to delete the trigger , You can use the following statement : Delete the three triggers created so far .
DROP TRIGGER IF EXISTS trigger_test01;
DROP TRIGGER IF EXISTS trigger_test02;
DROP TRIGGER IF EXISTS trigger_test03;
4 Other operations of trigger
- Check triggers :
show triggers;
- Delete trigger :
drop trigger if exists trigger_name;
5 Precautions for trigger
- MySQL This table cannot be insert、update、delete operation , To prevent recursive loops from triggering ;
- Use as few triggers as possible , Suppose the trigger triggers each execution 1s, Then modify the table every time 、 The update operation will take some extra time , Thus, the efficiency of table operation is low ;
- Triggers are for each row , Try not to use triggers for tables that are frequently added, deleted, or modified , Avoid additional consumption of resources ;
- Frequent use of triggers will lead to more trouble in maintaining data in the future , Because there are many behaviors in one change .
At the end
The above is the whole content of this article , The follow-up will continue Free update , If the article helps you , Please use your hands Point a praise + Focus on , Thank you very much ️ ️ ️ !
If there are questions , Welcome to the private letter or comment area !
Mutual encouragement :“ You make intermittent efforts and muddle through , It's all about clearing the previous efforts .”
边栏推荐
- A bug using module project in idea
- A single game with goods increased by 100000, and the rural anchor sold men's clothes on top of the list?
- Basic data types and string types are converted to each other
- Greenplum6.x搭建_安装
- [step on the pit] Nacos registration has been connected to localhost:8848, no available server
- A method for quickly viewing pod logs under frequent tests (grep awk xargs kuberctl)
- Tronapi-波场接口-源码无加密-可二开--附接口文档-基于ThinkPHP5封装-作者详细指导-2022年7月6日-新手快速上手-可无缝升级tp6版本
- 【踩坑】nacos注册一直连接localhost:8848,no available server
- [Yu Yue education] C language programming reference of Zhongbei College of Nanjing Normal University
- Redis summary
猜你喜欢
Interpolation lookup (two methods)
Greenplum6.x搭建_环境配置
A method for quickly viewing pod logs under frequent tests (grep awk xargs kuberctl)
Installation and configuration of PLSQL
Greenplum6.x监控软件搭建
PLSQL的安装和配置
AVL balanced binary search tree
详解华为应用市场2022年逐步减少32位包体上架应用和策略
Quick sorting (detailed illustration of single way, double way, three way)
如何在HarmonyOS应用中集成App Linking服务
随机推荐
Iptables' state module (FTP service exercise)
21 general principles of wiring in circuit board design_ Provided by Chengdu circuit board design
调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息:the params is error
opencv 将16位图像数据转为8位、8转16
National standard gb28181 protocol video platform easygbs adds streaming timeout configuration
Golan idea IntelliJ cannot input Chinese characters
字符串操作
Compilation and linking of programs
Exercise arrangement 2.10, 11
JS operation
Greenplum6.x常用语句
How to add a mask of a target in a picture
[kuangbin]专题十五 数位DP
let const
uniapp 微信小程序监测网络
The field value in Splunk subquery fuzzy matching CSV is*
POJ - 3616 Milking Time(DP+LIS)
数据分片介绍
使用AGC重签名服务前后渠道号信息异常分析
idea里使用module项目的一个bug