首页 > 数据库 >MySQL触发器

MySQL触发器

时间:2022-12-22 17:01:39浏览次数:45  
标签:触发器 DEFAULT AUTO CREATE INCREMENT MySQL NULL

准备代码:

CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci;
use shop;
CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `add_time` TIMESTAMP DEFAULT NOW(),
  PRIMARY KEY (`id`),
  KEY `name` (`name`(250)) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;

CREATE TABLE `logs` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `log` varchar(255) DEFAULT NULL COMMENT '日志说明',
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3 COMMENT='日志表';
View Code
CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci;
use shop;
CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `add_time` TIMESTAMP DEFAULT NOW(),
  PRIMARY KEY (`id`),
  KEY `name` (`name`(250)) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;

CREATE TABLE `logs` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `log` varchar(255) DEFAULT NULL COMMENT '日志说明',
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3 COMMENT='日志表';
View Code

 

1.什么是触发器

触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。

2.创建触发器

语法:

CREATE TRIGGER <trigger_name>  
  BEFORE|AFTER
  INSERT|UPDATE|DELETE  ON <table_name> #表名
  FOR EACH ROW 
  BEGIN
  <触发的SQL语句>(调用NEW/OLD参数);
  END

参数说明:

(1)CREATE TRIGGER <trigger_name> --- 触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.

(2){ BEFORE | AFTER } --- 触发器触发时间设置:可以设置为事件发生前或后(前:一般用于校验;后:一般用于关联)。

(3){ INSERT | UPDATE | DELETE } -- 设定触发事件:如执行insert、update或delete的过程时激活触发器。

(4)ON <table_name> --- 触发器是属于某一个表的: 当在这个表上执行 INSERT|UPDATE|DELETE 操作的时候就导致触发器的激活. 同时,我们不能给同一张表的“同一个事件”安排两个触发器(意味着不能同时有两个Insert触发器)。

(5)FOR EACH ROW --- 触发器的执行间隔(必有的公式内容):FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。

(6)<触发的SQL语句> --- 触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。当然,触发SQL中可以调用“触发了( INSERT | UPDATE | DELETE )触发器的那一行数据”。

 

标签:触发器,DEFAULT,AUTO,CREATE,INCREMENT,MySQL,NULL
From: https://www.cnblogs.com/YorkZhangYang/p/16999140.html

相关文章

  • MySQL 8.0 Online DDL操作的并行线程
    在MySQL8.0.27中引入了新的参数:innodb_ddl_threads。表示在索引创建期间,在sort和build阶段可以使用的并发线程数。可以应用于在线ddl操作时创建或rebuild二级辅助索引。......
  • mySQL将表结构转化成表格格式并插入到word文档中,表结构转化为数据库设计说明书
    navicat查询分析器SELECTCOLUMN_NAME列名,COLUMN_TYPE数据类型,DATA_TYPE字段类型,CHARACTER_MAXIMUM_LENGTH长度,IS_NULLABLE是否为空,COLUMN_DEFAUL......
  • Zeppelin-0.9.0安装并集成Hive、Spark、MySQL、Python
    1、下载安装包http://archive.apache.org/dist/zeppelin/zeppelin-0.9.0/2、上传zeppelin-0.9.0-bin-all.tgz至/opt/soft3、解压tar-zxvf/opt/soft/zeppelin-0.......
  • Mysql命令 alter add
    Mysql命令alteradd1、加字段在Mysql中,alteradd命令用来增加表的字段。其命令格式如下:ALTERTABLE表名 ADD字段名数据类型DEFAULTNULLCOMMENT'注释';例如,在表......
  • 学生管理系统-WinForm(C#)与MySQL
    一、创建数据库1创建数据库createdatabasestudentmanagersystem;2创建表login和studentCREATETABLElogin( userVARCHAR(50)PRIMARYKEY, passwdVARCHAR(......
  • CentOs8 MySQL8.0.31 忘记密码修改密码
     最近忙一段时间没有上来忘记了MySQL得密码了,因为之前得5.7版本得不一样所以还修改不了,啊哈哈首先进去/etc/my.cnf  插入skip-grant-tables :wq保存退出syste......
  • MySQL-带你上官网看索引
    在我之前的一篇文章中,有引用一个讨论用Hash还是Tree的问题,DB中关于查找类数据结构,除了树,还有Hash(HashMap,HashSet)。存储数据结构之争B+树主要是照顾磁盘IO这种特殊的性......
  • MySql索引下推知识分享
    作者:刘邓忠Mysql是大家最常用的数据库,下面为大家带来mysql索引下推知识点的分享,以便巩固mysql基础知识,如有错误,还请各位大佬们指正。1什么是索引下推索引下推(IndexCondit......
  • mysql 字段名为 timestamp ,不让转义
    select ip_type'IP类型', timestamp'数据填报时间'from ( select d.id, if(d.ip_type=0, 'IP', 'IP段')ip_type, d.timestamp, (CASE d.visibl......
  • 一个MySQL双引号把我坑惨了!
    一、前言 最近经常碰到开发误删除误更新数据,这不,他们又给我找了个麻烦,我们来看下整个过程,把我坑得够惨。 二、过程 由于开发需要在生产环节中修复数据,需要执行120......