mysql创建存储过程

mysql触发器trigger 实例详解

房东的猫 提交于 2020-02-01 08:59:53
mysql触发器trigger 实例详解 (转自 https://www.cnblogs.com/phpper/p/7587031.html) MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧: 什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中插入一条数据的之后帮你在日志表中插入一条日志信息。当然触发器并不是只能进行插入操作,还能执行修改,删除。 创建触发器 创建触发器的语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt trigger_name:触发器的名称 tirgger_time:触发时机,为BEFORE或者AFTER trigger_event:触发事件,为INSERT、DELETE或者UPDATE tb_name:表示建立触发器的表明

mysql触发器trigger 实例详解

一世执手 提交于 2020-02-01 08:58:31
mysql触发器trigger 实例详解 MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧: 什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中插入一条数据的之后帮你在日志表中插入一条日志信息。当然触发器并不是只能进行插入操作,还能执行修改,删除。 创建触发器 创建触发器的语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt trigger_name:触发器的名称 tirgger_time:触发时机,为BEFORE或者AFTER trigger_event:触发事件,为INSERT、DELETE或者UPDATE tb_name:表示建立触发器的表明,就是在哪张表上建立触发器 trigger_stmt:触发器的程序体

mysql触发器trigger

非 Y 不嫁゛ 提交于 2020-02-01 08:57:27
2018年8月15日,今天由于之前的失误(因为刚来公司不太懂业务导致的)使一个不应该赋值的字段给赋值了,神奇的是居然上生产了,后来就是一系列数据错误,为了及时抑制事态的严重,只能写触发器了,因为改代码已经不现实了,大致情况是这样的,有一张表里面一个订单号和一个订单状态,由于当时是excel导入的数据,excel并没有这两个字段,当时来的时间不长,看到这个表有个订单号,感觉一个是个重要的字段,就问了一组长,他说用UUID赋值就行,后来就赋值了,赋值以后会不断的调取华泰那边的接口,因为这个订单号是我们生成的,华泰并没有,然后就是各种错,后来组长说谁让你赋值的,你见过那个业务字段可以随机赋值的,心里一万个MMP,当时不是你说的吗,后来就洗个触发器止损吧!!! 原文地址转载:https://www.cnblogs.com/phpper/p/7587031.html 通过这问大神的指点才写出来 先上我写的触发器: DROP TRIGGER if EXISTS upd_che; CREATE TRIGGER upd_che BEFORE INSERT ON wl_ser_info FOR EACH ROW BEGIN IF ( NEW.SERVICE_ORDER_STATUS = '' OR NEW.SERVICE_ORDER_STATUS IS NULL ) THEN SET NEW

MySQL(十二)游标和触发器

纵然是瞬间 提交于 2020-02-01 08:24:57
一、游标 定义: 存储在MySQL服务器上的数据库查询,是一种被select语句检索出来的结果集。 作用: 方便在检索出来的结果集中前进或后退一行或多行。 游标主要用于交互式应用;MySQL中的游标只能用于存储过程(和函数)。 1、创建游标 游标使用declare语句创建;declare命名游标,并定义响应的select语句,根据需要带where和其他子句;例如: create procedure processorders() begin declare ordernumbers CURSOR for select order_num from orders; end; 这个存储过程中,declare定义和命名了游标ordernumbers,存储过程处理完成后,游标消失(因为它局限于存储过程内)。 2、打开和关闭游标 游标使用open cursor语句来打开,例如: open ordernumbers; 在处理open语句时执行查询,存储检索出的数据以供浏览和滚动; 游标处理完成时,使用close语句关闭,例如: close ordernumbers; close释放游标使用的所有内部内存和资源,因此在每个游标不在需要时都应该关闭。 PS: 一个游标关闭后,如果没有重新打开,则不能使用;但如果该游标被声明过,则不需要再次声明,用open语句打开使用即可。 如果不明确游标是否关闭

Mysql高级三 之 存储过程&函数

自闭症网瘾萝莉.ら 提交于 2020-01-29 20:33:11
Mysql高级三 之 存储过程和函数 1.存储过程和函数 1.1存储过程和函数概述 存储过程和函数是 事先经过编译并存储在数据库中的一段SQL语句的集合.调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务之间的传输,对于提高数据处理的效率是有好处的. 存储过程和函数的区别在于函数必须有返回值而存储过程没有. 函数:是一个返回值的过程 过程:是一个没有返回值的函数 1.2创建存储过程 CREATE PROCEDURE procedure_name ( [ proc_parameeter [ . . . ] ] ) begin -- SQL语句 end ; 示例: delimiter $ create procedure pro_test ( ) begin select 'Hello MySQL' ; end $ delimiter ; 结果: delimiter: 该关键字用来声明SQL语句的分隔符,告诉MySQL解释器,该段命令是否已经结束了,Mysql是否可以执行了. 默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,MySQL将会执行该命令. 1.3调用存储过程 CALL pro_test ; 结果: 1.4查看存储过程 -- 查看db_name数据库中的所有存储过程(这个存储在mysql 数据库下的

MySQL语法拾遗-存储程序

佐手、 提交于 2020-01-29 06:23:36
title: mysql语法拾遗-存储程序 date: 2019-11-11 12:23:49 categories: MySQL MySQL语法相关 tags: MySQL 语法指南 description: MySQL中的存储程序介绍(存储例程,触发器,事件) MySQL中的存储程序 自定义变量与语句结束符 自定义变量 set 使用 set 语句,自定义变量,变量名前要加’@'符号。可以将常量,某一搜索结果值,赋值给变量 -- 将1赋值给变量a set @a = 1 -- 将搜索结果赋值给多个变量 SELECT m1 , n1 FROM t1 LIMIT 1 INTO @a , @b -- 查看变量 select @a 语句结束符 delimiter delimiter 设置语句的语句结束分隔符,默认为’;’ delimiter $ SELECT * FROM t1 LIMIT 1 ; SELECT * FROM t2 LIMIT 1 ; SELECT * FROM t3 LIMIT 1 ; $ 存储函数与存储过程 存储函数 将MySQL语句封装到某一函数中。 创建存储函数 语句形式 : CREATE FUNCTION 函数名 ( ` [ 参数列表 ] ` ) RETURNS 返回值类型 BEGIN 函数体(以 ';' 分隔语句) END e.g. delimiter $

MySQL常用命令

核能气质少年 提交于 2020-01-27 03:56:04
连接MySQL 格式: mysql -h 主机地址 -u用户名 -p用户密码 例 1:连接到本机上的 MySQL mysql -uroot -pmysql; 例 2:连接到远程主机上的 MySQL mysql -h 127.0.0.1 -uroot -pmysql; 修改新密码 在终端输入:mysql -u用户名 -p密码,回车进入MySQL > use mysql; > update user set password=PASSWORD('新密码') where user='用户名'; > flush privileges; #更新权限 > quit; #退出 增加新用户 格式:grant select on 数据库.* to 用户名@登录主机 identified by '密码' 举例: 例 1:对所有数据库有 查询、插入、修改、删除的权限。 首先用以 root 用户连入 MySQL,然后键入以下命令: mysql>grant select,insert,update,delete on *.* to root@localhost identified by 'mysql'; 或者 grant all privileges on *.* to root@localhost identified by 'mysql'; 然后刷新权限设置。 flush privileges; 例

Mysql常用命令

雨燕双飞 提交于 2020-01-26 06:49:33
Mysql常用命令详解 Mysql安装目录 数据库目录 /var/lib/mysql/ 配置文件 /usr/share/mysql(mysql.server命令及配置文件) 相关命令 /usr/bin(mysqladmin mysqldump等命令) 启动脚本 /etc/init.d/mysql(启动脚本文件mysql的目录) 系统管理 连接MySQL 格式: mysql -h 主机地址 -u用户名 -p用户密码 例 1:连接到本机上的 MySQL。 hadoop@ubuntu:~$ mysql -uroot -pmysql; 例 2:连接到远程主机上的 MYSQL。 hadoop@ubuntu:~$ mysql -h 127.0.0.1 -uroot -pmysql; 修改新密码 在终端输入:mysql -u用户名 -p密码,回车进入Mysql。 > use mysql; > update user set password=PASSWORD('新密码') where user='用户名'; > flush privileges; #更新权限 > quit; #退出 增加新用户 格式:grant select on 数据库.* to 用户名@登录主机 identified by '密码' 举例: 例 1:增加一个用户 test1 密码为 abc,让他可以在任何主机上登录

mysql触发器

◇◆丶佛笑我妖孽 提交于 2020-01-26 00:31:16
创建触发器使用CREATE TRIGGER语句 ,要查看数据库中有哪些触发器可以使用SHOW TRIGGERS命令。 CREATE TRIGGER语法格式: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 说明: ● trigger_name:触发器的名称,触发器在当前数据库中必须具有唯一的名称。如果要在某个特定数据库中创建,名称前面应该加上数据库的名称。 ● trigger_time:触发器触发的时刻,有两个选项:AFTER和BEFORE,以表示触发器是在激活它的语句之前或之后触发。如果想要在激活触发器的语句执行之后执行几个或更多的改变,通常使用AFTER选项;如果想要验证新数据是否满足使用的限制,则使用BEFORE选项。 ● trigger_event:触发事件,指明了激活触发程序的语句的类型。trigger_event可以是下述值之一: INSERT:将新行插入表时激活触发器。例如,通过INSERT、LOAD DATA和REPLACE语句。 UPDATE:更改某一行时激活触发器。例如,通过UPDATE语句。 DELETE:从表中删除某一行时激活触发器。例如,通过DELETE和REPLACE语句。 ● tbl_name:与触发器相关的表名

mysql脚本写入批量的数据

扶醉桌前 提交于 2020-01-24 14:59:32
这只是一个样例,可以按照这个模板进行修改生成自己需要的批量数据 1.建表 # 新建库 create database bigData; use bigData; #1 建表dept CREATE TABLE dept( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, dname VARCHAR(20) NOT NULL DEFAULT "", loc VARCHAR(13) NOT NULL DEFAULT "" ) ENGINE=INNODB DEFAULT CHARSET=GBK ; #2 建表emp CREATE TABLE emp ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/ ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/ job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/ mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,/*上级编号*/ hiredate DATE NOT NULL,/