展开全部

创建62616964757a686964616fe4b893e5b19e31333365636562存储过程和触发器

1、建表

首先先建两张表(users表和number表),具体设计如下图:

2、存储过程

新建一个函数,用来往users表中插入数据,创建过程如下:

新建函数—(过程)完成--然后插入代码及名字。

保存以后单击运行,可以看到users表中的数据如下:

整个存储过程的编写就完成了,当然这只是一个极为简单的例子,仅供入门参考。

3、触发器

在写触发器之前,我们先把users的数据清空

truncate table users;

现在我们有两个表,我要做的事情就是,当我往users中插入数据后,number中也相应变化:

例如,number表中有一条初始数据,id=1,num=0;

当我往users中插入一条数据后,就触发number表中的num字段就加1,也就是记录用户数。

下面我们来实现这个小小的功能。

右击users表,选择设计表,再选择触发器选项,在定义处写入代码:

begin

update number

set num = (select count(*) from users) ;

end

触发器图示:

保存后,再往users表中添加新数据,再查看一下number中的数据,你会神奇的发现,number表中的数据也变了,自己动手试一下吧!

ps:存储过程需要程序员自己去执行,触发器,顾名思义,自动触发。

4、游标使用

首先我将users表中的数据清空(当然不清空也可以),然后再往里面填充数据,如下图所示:

我现在想做的是将student_ID字段都加上100,通过这个例子简单展示一下游标的使用。

创建一个存储过程,创建方式参考上面步骤。存储过程代码如下:

BEGIN

#Routine body goes here...

declare tmp bigint default 0;

declare cur CURSOR FOR SELECT student_ID FROM users;  -- 定义游标

declare CONTINUE HANDLER FOR SQLSTATE '02000' set tmp = 0;

OPEN cur;  -- 打开游标

FETCH cur INTO tmp;  -- 游标向下走一步

WHILE(tmp != 0)

DO

select tmp;  -- 将tmp打印出来,会发现tmp就像一个指针,一开始指向第一行,游标走一步,则指向下一行记录

UPDATE users

SET student_ID = tmp + 100

WHERE student_ID = tmp;

FETCH cur INTO tmp;

END WHILE;

CLOSE cur;  -- 关闭游标

END

执行上面的存储过程,你会发现,users中的数据如你所愿的发生了变化。

当然,这个功能直接用循环就可以解决,我这里只是简单展示一下游标的用法,利于对游标有个感性认识。

that‘s  all~

mysql光标不见了_mysql创建光标失败相关推荐

  1. mysql创建新表失败_MySQL创建表失败的问题

    今天有一个朋友问我一个MySQL的建表问题,问题的现象是创建表失败,根据他的反馈,问题比较奇怪, CREATE TABLE XXX ..此处省略260多个字段 `xxxxIsAllowIn` varc ...

  2. mysql用户数据导入_mysql创建数据库、用户及导入数据_mysql数据库教程

    怎样mysql创建数据库.用户及导入数据 1. 修改MYSQL服务器字符集为utf8: 1.1 当前MYSQL服务器字符集设置 SHOW VARIABLES LIKE 'character_set_% ...

  3. mysql中删除用户_Mysql创建,删除用户

    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...

  4. docker mysql容器启动不_Mysql容器启动失败-解决方案

    在看问题之前首先熟悉几个命令 相关命令 1.docker attach 连接到正在运行中的容器: 命令:docker attach --sig-proxy=falsemynginx 2.docker ...

  5. mysql添加临时索引_mysql创建索引/删除索引操作

    -- 1.ALTER 创建索引 -- table_name表名,column_list列名,index_name索引名 -- 创建index索引 ALTER TABLE table_name ADD ...

  6. mysql删除表命令_MySQL创建和删除表操作命令实例讲解

    创建表 简单的方式 CREATE TABLE person ( number INT(11), name VARCHAR(255), birthday DATE ); 或者是 CREATE TABLE ...

  7. mysql 远程用户授权_mysql创建远程用户并授权

    今天需要在本地测试系统功能,因为本地没有数据库,就需要在程序里面连接远程数据库: 先用ssh登录远程服务器,用root连上数据库看看情况: mysql> select Host,User,Pas ...

  8. mysql磁盘临时表清理_mysql 创建大量磁盘临时表

    发现 mysql 中创建的临时表基本都是磁盘临时表,对此进行排查.最后为临时表机制说明. 通过查看 mysql 状态变量,看到创建的临时表基本都是磁盘临时表. 查看临时表配置,默认配置 16M,配置并 ...

  9. mysql主从配置错误_mysql主从配置失败,主从通讯失败

    配置mysql主从的时候,检查slave状态,发现报错信息, Error 'The MySQL server is running with the --skip-grant-tables optio ...

最新文章

  1. 目前我国家庭计算机用户接入因特网的下述,目前我国家庭计算机用户接入因特网的下述几种方法中,速度最快的是________ 。...
  2. dsp 数据类型强制转换_JavaSE第二章总结—数据类型
  3. java画布颜色切换_在本视频讲解演示中,扩展画布的目的是为了后面制作齿孔时操作起来方便,扩展部分更换了另一种颜色,是为了以示区别,能直观区分出票面部分。...
  4. [jQuery基础] jQuery案例 -- 新浪微博
  5. 解决百度 ueditor v1.4.3 编辑器上传图片失真的bug?
  6. JSON and Microsoft Technologies(翻译)
  7. Linux操作环境下配置MMIX环境
  8. android 向上弹出,android 弹出Popupwindow 自适用(Activity或者Dialog)判断向上还向下...
  9. ac管理器管理员密码忘记了_选择密码管理器
  10. matlab的取整函数
  11. Linux上层关机和reboot流程
  12. 如何让电脑计算机d盘布局,创建MSR分区,解决“由于用户电脑存在一个不支持的用于UEFI固件的硬盘布局,因此系统无法安装”...
  13. ARFoundation多图识别的一个脚本
  14. C++复原2048小游戏(纯文字)
  15. java项目管理软件系统springboot+mysql+layui+mybatis-plus进销存源码
  16. 搜狐号按作者火车头采集规则
  17. 艾司博讯:拼多多网店账号出现异常该怎么解决?
  18. Hibernate本地SQL结果集转换为自定义POJO对象
  19. 经济应用数学基础二 线性代数 (第四版) 赵树嫄 编 中国人大版 课后习题答案
  20. 2019年记录:java小白级程序员工作一年以来的经历,遇到的坎坷以及当时的心态

热门文章

  1. Docker之docker简介及其优势
  2. 解析CI即CodeIgniter框架在Nginx下的重写规则
  3. Halcon 标定与准确测量
  4. 安装mysql 5.5.14 报错
  5. OC-变量和数据类型
  6. Jmail的邮件发送
  7. [物理学与PDEs]第3章第2节 磁流体力学方程组 2.4 不可压情形的磁流体力学方程组...
  8. android adb install Failure,提示base.apkcode is missing问题的解决
  9. Windows与Linux共享文件夹互相访问
  10. 扬州古城门高挂大红春联迎新春 环卫工受邀揭幕