MySql的存储过程和触发器
Mysql的存储过程是类似于其它编程语言中的函数的功能,存储过程内部可以使用顺序循环和转移三种基本程序结构,而且整个存储过程可以接受和返回参数。
创建存储过程(procedure)时,因为其内部有以;结尾的sql语句,所以我们要更改语句结束符,使用delimiter //来更改结束符为//。然后就可以定义了,eg
create procedure name()
begin
declare a int(10);
set a = 1;
while a<10 do
if a%2 = 1 then
set a = a+1;
insert into users values (null,a,’’,’’);
else
set a=a+1;
end if;
end while;
end //
调用时直接使用call name()来就可以,注意要带()。
显示创建过程用show create procedure name
显示所有存储过程用show procedure status
删除存储过程用 drop procedure name
存储过程内可以使用字符串,时间和数学函数。同时可以在参数列表中定义传入和传出的参数,定义输出参数 out a int,在存储过程内部给这个变量@a赋值,显示时用select @a。
Mysql的触发器相当于内部处理的一些过程,他不带入和带出任何的参数,其内部使用的参数就是新旧两条记录old和new的字段。用于完成数据表之间的触发操作,来保证数据库的一致性、完整性。
定义触发器的规程:
create trigger name after|before delete|update|insert on table_name for each row begin end 当有多个语句的时候就用begin和end,不可以有多个相同时间点的相同类型操作。Eg
Create trigger name before update on users
For each row
Begin
If new.admin = 1 then
Set new.admin =1;
Else
Set new.admin =0;
End if;
End
调用触发器,当在表上出现制定的操作时,执行相应的触发器。
删除触发器drop trigger name
用途举例:同步插入数据至不同类型的表,同步删除关联数据。
MySql的存储过程和触发器的更多相关文章
- MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称
MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称 INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA. ...
- MySQL笔记 存储过程 游标 触发器
第二十三章 使用存储过程 MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就 ...
- mysql存储过程和触发器
mysql编程(存储过程和触发器) 存储过程 什么是存储过程 存储过程,带有逻辑的sql语句 存储过程特点 执行效率非常快!存储过程是在数据库的服务器端执行的!!! 移植性很差!不同数据库的存储过程是 ...
- mysql 自己定义存储过程和触发器
mysql 自己定义存储过程和触发器 --存储过程示范 DROP PROCEDURE IF EXISTS PRO_TEST; CREATE PROCEDURE PRO_TEST(IN NUM_IN I ...
- mysql存储过程和触发器的应用
***********[mysql 存储过程和触发器 -- 别安驹]********************* 1.什么情况下使用存储过程? 完成一些比较麻烦的逻辑,比如多表在mysql端的cpu很空 ...
- MySQL之视图、触发器、事务、存储过程、函数
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- MySQL之视图、触发器、事务、存储过程、函数 流程控制
MySQL之视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部 ...
- mysql 视图,事务,存储过程,触发器
一 视图 视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表.使用视图我们可以把查询过程中的临时表摘出来,保存下来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sq ...
- MySQL必知必会笔记(六)存储过程 游标 触发器
留印:http://blog.sina.com.cn/s/articlelist_1254871964_5_1.html 第二十三章 使用存储过程 MySQL5 中添加了存储过程的支持. ...
随机推荐
- Codeforces Beta Round #96 (Div. 1) C. Logo Turtle DP
C. Logo Turtle A lot of people associate Logo programming language with turtle graphics. In this c ...
- mysql对表列数和行大小的限制
mysql对表列数和行大小的限制 - CSDN博客 https://blog.csdn.net/Dr_Joseph/article/details/78111312
- ubuntu 14.04中: 像ubuntu16.04 一样可以在文件夹内打开此路径下的shell
sudo apt-get install nautilus-open-terminal 然后重启 ok!
- bzoj 4809: 皇后【dfs】
爆搜卡线过 并不知道正解是啥 #include<iostream> #include<cstdio> using namespace std; const int N=40; ...
- 13、git
安装Git 网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseGit,linux建议使用Git GUI或者GITK.(windows下载exe安装包,linux可以使 ...
- codechef: BINARY, Binary Movements
非常有毛病的一道题,我一个一个读字符死活过不去,改成整行整行读就 A 了... 做法就是...最小点覆盖... 我们发现可以把一个点向上跳看做被吃掉了,然后最顶层的点是无法向上跳所以不能被吃掉,然后被 ...
- CSMA/CA协议
802.11中采用CSMA/CA协议来规定多个工作节点共用信道的问题. CSMA/CA的全称是Carrier sense multiple access with collision avoidanc ...
- [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
Description N(1<=N<=100000)头牛,一共K(1<=K<=30)种特色,每头牛有多种特色,用二进制01表示它的特色ID.比如特色ID为13(1101),则 ...
- 全面学习ORACLE Scheduler特性(11)使用Job Classes
六.使用Job Classes Job Classes 相当于创建了一个job组,DBA可以将那些具有相同特性的job,统统放到相同的Job Classes中,然后通过对Job Class应用ORAC ...
- 解决FormClosing事件点击关闭2次的问题
以下代码:提示框会跳出2遍 private void mFrmmain_FormClosing(object sender, FormClosingEventArgs e) { if (Dialog ...