当前位置:网站首页>[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 .”
边栏推荐
- Iptables' state module (FTP service exercise)
- 为什么要选择云原生数据库
- 国标GB28181协议视频平台EasyGBS新增拉流超时配置
- Thirteen forms of lambda in kotlin
- IP地址的类别
- Other 7 features of TCP [sliding window mechanism ▲]
- 南京商品房买卖启用电子合同,君子签助力房屋交易在线网签备案
- AVL balanced binary search tree
- Opencv learning notes 1 -- several methods of reading images
- 2-3 lookup tree
猜你喜欢
[Yugong series] February 2022 U3D full stack class 005 unity engine view
JS的操作
Opencv learning notes 1 -- several methods of reading images
[Yugong series] February 2022 U3D full stack class 007 - production and setting skybox resources
21 general principles of wiring in circuit board design_ Provided by Chengdu circuit board design
Interpolation lookup (two methods)
[Nanjing University] - [software analysis] course learning notes (I) -introduction
Golang compilation constraint / conditional compilation (/ / +build < tags>)
Input of mathematical formula of obsidan
iptables 之 state模块(ftp服务练习)
随机推荐
You should use Google related products with caution
Routing information protocol rip
调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息:the params is error
uniapp 微信小程序监测网络
JS operation
登山小分队(dfs)
数据分析方法论与前人经验总结2【笔记干货】
2-3查找树
opencv 将16位图像数据转为8位、8转16
[Chongqing Guangdong education] accounting reference materials of Nanjing University of Information Engineering
調用華為遊戲多媒體服務的創建引擎接口返回錯誤碼1002,錯誤信息:the params is error
求有符号数的原码、反码和补码【C语言】
2-3 lookup tree
How to add a mask of a target in a picture
Are you holding back on the publicity of the salary system for it posts such as testing, development, operation and maintenance?
Sign and authenticate API interface or H5 interface
[Chongqing Guangdong education] organic electronics (Bilingual) reference materials of Nanjing University of Posts and Telecommunications
POJ - 3784 Running Median(对顶堆)
Upload an e-office V9 arbitrary file [vulnerability recurrence practice]
Input of mathematical formula of obsidan