mysql学习之路09-触发器

数据库实验八 触发器实验 阅读详情
触发器:
我们可以监视某表的变化,当发生某种变化时,触发某个操作
能监视:增,删,改
触发操作:增,删,改


触发器应用场景:
1.当向一张表中添加或删除记录时,需要在相关表中进行同步操作。
比如,当一个订单产生时,订单所购的商品的库存量相应减少。

2.当表上某列数据的值与其他表中的数据有联系时。
比如,当某客户进行欠款消费,
可以在生成订单时通过设计触发器判断该客户的累计欠款是否超出了最大限度。

3.当需要对某张表进行跟踪时。
比如,当有新订单产生时,需要及时通知相关人员进行处理,
此时可以在订单表上设计添加触发器加以实现


案例如下:

例一、

增加一个订单  库存相对减少  使用触发器解决问题

create table g(
id int,
name varchar(10),
num int
)charset utf8;

create table o(
oid int,
gid int,
much int
)charset utf8;

insert into g
values 
(1,’猪’,22),
(2,’羊’,19),
(3,’狗’,12),
(4,’猫’,8);

g表查询结果如图1:


通过触发器:
监视地点:o表
监视操作:insert
触发操作:update
触发时间:after

创建触发器的语法:
create trigger triggerName 
after/before insert/update/delete on表名
for each row  #这句话是固定的
begin
sql语句    # 一句或多句,insert/update/delete范围内
end;


delimiter </span> &nbsp;告诉服务器以什么符号结束 &nbsp;默认是一“;”结束 这里是以“”结束

create trigger tg1
after insert on o
for each row
begin
update g set num = num - 3 where id = 2;  #这里必须用“;”但是mysql遇见;结束  所以说要修改结束符
end$  
告诉触发器以什么符号结束 这里是$结束
这个触发器不够完美 修改有局限性

然后操作触发器 insert into o values (2,2,3)$
此时g表查询结果如图2:


删除触发器的语法:
drop trigger 触发器名;(drop trigger tg1;)

如何在触发器引用行的值
对于insert而言,新增的行 用new来表示
行中的每一列的值,用 new.列名 表示

create trigger tg2
after insert on o
for each row 
begin 
update g set num = num - new.much where id = new.gid;
end$

没有操作之前的g表信息如图3:

操作触发器
insert into o values (1,4,2);
此时如图4:

可见触发器已经起作用  

例二、

删除一个订单,库存相应增加


监视地点:o表
监视事件:delete
触发事件:update
触发时间:after

对于delete而言,原本有一行,后来被删除,
想引用被删除的这一行,用old来表示,old.列名  就可以引用被删除行中的值

create trigger tg3
after delete on o
for each row
begin 
update g set num = num + old.much where id = old.gid;
end$
没有触发之前
g表信息如图5:

o表信息如图6:


操作触发器:
delete from o where oid = 1$
此时g表信息如图7:


例三、
修改订单的数量,改变库存的触发器
对于update来说
被修改的行,
修改前的数据,用old来表示,old.列名 引用被修改之前行中的值
修改后的数据,用new来表示,new.列名 引用被修改之后行中的值

create trigger tg4
after update on o
for each row 
begin
update g set num = num + old.much - new.much where id = old.gid;
end$

修改前g表的数据如图8:


o表的数据如图9:


操作触发器后:

update o set much = 7 where oid = 1;

g表的数据如图10:

o表的数据如图11:



触发器里after和before的区别
after是先安完成数据的增,删,改再触发
触发的语句晚于监视的增,删,改,无法影响前面的增删改动作

before是先完成触发,再增删改
触发的语句先于监视的增删改发生,我们有机会判断,修改即将发生的操作


典型案例
对于所下订单,进行判断,如果订单的数量>5,就认为是恶意订单,
强制把所订的商品数量改成5

create trigger tg5
before insert on o
for each row
begin
   if new.much > 5 then
       set new.much = 5;
   end if;
   update g set num = num - new.much where id = new.gid;
end$
查看g表的所有数据 如图1:


查看o表的所有数据 如图2:


触发触发器:
insert into o values (1,1,100)$
此时查看g表的所有数据 如图3:


查看o表的所有数据 如图4:


此时可以看出用before可以判断


查看所有的触发器
show triggers;

特别注意:使用触发器要修改结束符“;”一般修改成“$”

delimiter &nbsp;这个语句结束不能加;否则认为是;结束

MySQL-笔记-09.存储过程及触发器的使用 表示输出参数,要求在调用存储过程时,必须为该参数传入一个用户会话变量(全局变量),用于将存储过程运算中的结果带出到调用处使用。表示输入输出参数,要求在调用存储过程时,必须为该参数传入一个有确定值的用户会话变量(全局变量),用于在存储过程运算中使用,同时,又可利用该参数将值从存储过程中带出。1)定义存储过程时,需指定其名称,用户名称并给出参数(如果该存储过程带有参数)调用执行指定的存储过程。调用存储过程时,网络中传送的只是调用语句,而不需要在网络中传送存储过程中的SQL语句代码。 阅读详情

相关推荐

BAPI_REPMANCONF1_CREATE_MTS实战:从MFBF事务码到精准零件反冲的代码级解析

本文深入解析了如何通过BAPI_REPMANCONF1_CREATE_MTS函数实现SAP生产模块中的零件反冲自动化。文章对比了MFBF事务码的手动操作与BAPI编程的优劣,详细拆解了函数的核心参数、数据结构、调用流程及事务控制,并提供了从数据准备到凭证获取的完整代码示例与避坑指南,帮助开发者实现高效、精准的批量投料过账。

weixin_29240343的博客 189

mysql数据库 触发器

触发器: 我们可以监视某表的变化,当发生某种变化时,触发某个操作 能监视:增,删,改 触发操作:增,删,改 触发器应用场景: 1.当向一张表中添加或删除记录时,需要在相关表中进行同步操作。 比如,当一个订单产生时,订单所购的商品的库存量相应减少。 2.当表上某列数据的值与其他表中的数据有联系时。 比如,当某客户进行欠款消费, 可以在生成订单时通过设计触发器判断该客户的

huangjianxiang1875的专栏 7724

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 488

15. 触发器的使用和案例

触发器的使用语法和案例

大头鱼 3922

DDR4 硬件设计笔记

DDR4-DRAM是第四代支持双倍数据读取,支持随机位置存取的静态存储器。DDR4-DRAM的工作原理。DDR之T拓扑和Fly-by拓扑。DDR的硬件设计。DDR4 PCB设计要点介绍。DDR4之PCB走线间距的串扰评估。DDR4之内存通道(channel)和内存列(rank)。

qq_26815321的博客 1万+

YOLOv8改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks及其改进的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法:直接加入(第五节讲解添加步骤)。模块加入如下:模块改进方法:基于的(第五节讲解添加步骤)。第二种改进方法是对中的进行改进,并将

Limiiiing的博客 1015

什么是触发器及简单例子

触发器是一种特殊的存储过程,类似于其它编程语言中的事件函数,SQL Server™ 允许为 INSERT、UPDATE、DELETE 创建触发器,当在表(视图)中插入、更新、删除记录时,触发一个或一系列 T-SQL 语句。触发器分为两种一个是INSTEAD OF 触发器;一个是AFTER 触发器。AFTER 触发器(也叫“FOR”触发器)会在触发 insert、update 或是del

feng2375的专栏 2118

基于UC3842的反激电源的全面深入解析与MATLAB仿真

内置电流检测,可实现电流模式控制,提高系统的动态响应性。多种保护功能,如欠压锁定、过温保护、短路保护等,确保系统的安全可靠运行。宽工作电压范围,适应不同的电源设计需求。简单的外部元件配置,易于实现。UC3842的典型应用包括开关电源、DC-DC转换器和反激式电源等,其稳定性和可靠性在实际应用中得到了广泛验证。

qq_38334677的博客 1086

mysql测试题:使用触发器完成订单与库存之间的动态连接

1.首先要理解触发器的使用场景: 个人浅显通俗的理解是当一张数据表的数据发生变化时,另外一张数据表与之存在逻辑关系的某一列或者多列的值也应对应发生变化;一般情况需要我们手动的进行修改,可是触发器的使用会自动完成这些内部的操作,防止人为的修改错误! 触发器trigger的四要素: 监视地点, 监视事件, 触发时间, 触发事件 基本语法: create trigge

living_ren的博客 7572

倒立摆的PLC控制(模型分析+ SCL源代码)

首先简单介绍下倒立摆模型,下面这幅图是MATLAB网站上的倒立摆模型,下面我们利用牛顿第二运动定律建立摆杆的运动方程。

RXXW_Dor的博客 3327

【YOLO系列】YOLOv4详解:模型结构、损失函数、训练方法及代码实现

摘要:YOLOv4在目标检测领域实现了精度与速度的平衡,通过CSPDarknet53骨干网络、SPP+PANet特征融合及CIoU损失函数等创新,在MS COCO数据集达到65.7% AP50,V100显卡实现62FPS实时检测。核心优化包括Mosaic数据增强、自对抗训练和解耦头结构,显著提升小目标检测和遮挡场景鲁棒性。代码实现采用CSP模块和SPP多尺度池化,兼顾计算效率与检测性能,为工业落地提供高效解决方案。(149字)

一碗白开水一 1357

【Mysql】mysql学习之旅09-触发器

代码】【Mysql】mysql学习之旅09-触发器。

JeffHan^_^的博客 245

[机器学习] 第二章 模型评估与选择 2.ROC:roc_curve原理及源代码详解

代码见:https://github.com/Carrie-Yi/machine_learning/tree/main/roc_curve

心宝的博客 1493

MySQL学习日记——DAY09(存储引擎、索引、触发器)

上图是MyiSAM索引结构图,我们可以看出MyISAM的索引仅仅保存了数据记录的地址,在查找时先随机查找找出指定键值,如果键值存在则取出data域的指针,然后以data域的指针为地址,读取响应的数据记录;索引本身可以起到约束的作用,比如唯一索引、主键索引都是可以起到唯一性约束的,因此在我们的数据表中,如果某个字段是唯一性的,就可以直接创建唯一性索引,或者主键索引。(3)按照聚簇索引的排列顺序,在进行范围查找的时候,由于数据间都是紧密相连,数据库不用从多个数据块中提取数据,节省了大量的IO时间;

happymaker0626的博客 387

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

学习日志day50(2021-09-16)(1、Spring JDBC 2、Mysql事务 3、Mysql触发器)

学习内容:学习Spring框架(Day50) 1、Spring JDBC 2、Mysql事务 1、Spring JDBC (1)使用Hikaricp连接池进行数据库连接,需要的jar包 mysql-connector-java.jar HikariCP.jar spring-jdbc.jar (2)配置数据源文件db.properties,url需要设置时区,否则可能会报错 配置驱动Driver时,如果mysql-connector-java.jar版本在6以上,则是com.mysql.cj.jdbc.D

huzige_的博客 203

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

09-MySQL触发器

09-MySQL触发器 09-MySQL触发器 1 触发器简介(trigger) 2 创建触发器 3 创建触发器 3.1 创建一个单执行语句的触发器 3.2 创建有多个执行语句的触发器 4 查看触发器 4.1 查看triggers 表中查看触发器信息 5 触发器的使用 5 删除触发器 6 Q&amp;A 6.1 使用触发器是注意 6.2 及时删除不需要的触发器 ...

EC的博客 379

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MySQL数据库查看触发器和MySQL修改和删除触发器(DROP TRIGGER)

查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。MySQL 中查看触发器的方法包括 SHOW TRIGGERS 语句和查询 information_schema 数据库下的 triggers 数据表等。本节将详细介绍这两种查看触发器的方法。

m0_37449634的博客 5806

mysql-09-触发器

触发器   触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性约束。触发器类似于约束,但是比约束更加灵活,可以实施比foreign key约束、check约束更加复杂的检查和操作,具有更精细和更强大的数据控制能力。     1.定义触发器 a) 语法:create

yijianbo900625的专栏 1348

Navicat for MySQL上Mysql触发器的使用

Navicat for MySQL:是一套管理和开发MySQL或MariaDB可视化桌面软件。 MySql使用触发器注意事项: 触发器使用的表需要支持事务(就是InnoDB)。 创建触发器的表,不能再sql语句(就是BEGIN...END)中再次操作该张表。 在Navicat for Mysql上使用触发器步骤: 选中需要添加触发器的表(右键/设计表) 2.给test...

qiudechao1的博客 4490

MySQL(89)MySQL查看触发器

查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。MySQL 中查看触发器的方法包括 SHOW TRIGGERS 语句和查询 information_schema 数据库下的 triggers 数据表等。本节将详细介绍这两种查看触发器的方法。

逍遥人世欢 3719

MySQL数据库——MySQL查看触发器

查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。MySQL 中查看触发器的方法包括 SHOW TRIGGERS 语句和查询 information_schema 数据库下的 triggers 数据表等。

Itmastergo的博客 3175

MySQL触发器学习笔记(经典)

触发器,顾名思义,就是当执行某个事件的时候触发另一个事件的执行!这个触发的时间分为BEFORE和AFTER两种,分别有before insert,before update,before delete和after insert,after update,after delete这六种情况 以下的文章主要向大家讲述的是MySQL触发器的实际使用详细说明与实际案例分析,同时本文也列举了一些在

liupeng900605的专栏 3228

MySQL 修改和删除触发器

修改触发器可以通过删除原触发器,再以相同的名称创建新的触发器。 基本语法 与其他 MySQL 数据库对象一样,可以使用 DROP 语句将触发器从数据库中删除。 语法格式如下: DROP TRIGGER [ IF EXISTS ] [数据库名] <触发器名> 语法说明如下: 1 触发器名 要删除的触发器名称。 2 数据库名 可选项。指定触发器所在的数据库的名称。若没有指定,则为当前...

weixin_45743799的博客 3803

MySQL-触发器

触发器是与数据库表关联的特殊对象,在执行INSERT、UPDATE或DELETE操作时自动触发预设SQL语句。MySQL支持三种行级触发器(不支持语句级),可通过OLD和NEW访问修改前后的数据。文章详细介绍了创建(BEFORE/AFTER)、查看和删除触发器的语法,并以学生表为例,演示了如何通过三种触发器记录变更日志到student_log表,包括新增、修改和删除操作的完整实现过程及测试方法,展示了触发器在数据审计中的实际应用。

2301_81261819的博客 693

mysql触发器when_MySQL触发器

SET QUOTED_IDENTIFIER ONGOSET ANSI_NULLS ONGOALTER TRIGGER [trg_risks] ON dbo.projectriskFOR INSERT, UPDATEASBEGINUPDATE projectriskSET classification =casewhen calc>= 9 then 3when calc <9 and...

weixin_39862716的博客 1170

mysql之触发器详解_学习笔记之MySQL触发器详解

触发器是由事件来触发某个操作,这些事件包括INSERT语句,UPDATE语句和DELETE语句创建触发器创建只有一个执行语句的触发器CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件ON 表名 FOR EACH ROW 执行语句其中,触发器名参数指要创建的触发器的名字1、创建MySQL触发器:语法:代码如下CREATE TRIGGER trigger_name trigge...

weixin_28788777的博客 688
上一篇: mysql学习之路08-事务
下一篇: css基础-对网页进行美化
QEcode
博客等级 码龄10年 39粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值