delimiter //
drop PROCEDURE proc_member_preprocessor;//
CREATE PROCEDURE proc_member_preprocessor (IN param_uid int(10))
main:BEGIN
SELECT COUNT(uid) INTO @proc_has_user FROM pre_common_member WHERE uid=param_uid; IF @proc_has_user < 1 THEN
LEAVE main;
END IF; INSERT INTO pre_common_member_tongji (uid,username,friends,posts,doings) (SELECT uid,'admin',friends,posts,doings FROM pre_common_member_count WHERE uid=param_uid);
END;//
CREATE TRIGGER trigger_pre_post AFTER INSERT ON pre_forum_thread FOR EACH ROW CALL proc_member_preprocessor(NEW.authorid);

解释下触发器的语法:

CREATE TRIGGER TIME(BEFORE | AFTER) EVENT(INSERT | UPDATE | DELETE) ON table FOR EACH ROW sql

UPDATE包含(NEW,OLD)INSERT(NEW)DELETE只有(OLD)

http://www.cnblogs.com/amboyna/archive/2008/01/27/1055178.html 这个文章里面说的非常详细。

/*定义存储过程*/
delimiter //
DROP PROCEDURE pro_demo; //
CREATE PROCEDURE pro_demo()
SELECT * FROM pre_forum_thread; // /*传入变量*/
delimiter //
DROP PROCEDURE pro_demo; //
CREATE PROCEDURE pro_demo(IN param_user varchar(30))
SET @username = param_user;
// /*传出变量*/
delimiter //
DROP PROCEDURE pro_demo; //
CREATE PROCEDURE pro_demo(OUT param_uid int)
BEGIN
SET param_uid = 5;
END; //
CALL pro_demo(@y);//
/*赋值并插入到数据表*/
delimiter //
DROP PROCEDURE pro_demo; //
CREATE PROCEDURE pro_demo()
BEGIN
SET @a = '';
SET @b = 'xixi';
INSERT INTO pre_proc_demo (k,v) VALUES (@a,@b);
END; //
/* 定义变量 @ INT,CHAR,VARCHAR..*/
delimiter //
DROP PROCEDURE pro_demo; //
CREATE PROCEDURE pro_demo()
BEGIN
DECLARE a VARCHAR(5);
DECLARE b VARCHAR(5);
SET a='';
SET b='awddwaadw';
INSERT INTO pre_proc_demo (k,v) VALUES (a,b);
END; //
/* 存储过程中if else的使用 */
delimiter //
DROP PROCEDURE sp_demo; //
CREATE PROCEDURE sp_demo(IN param_var int(10))
BEGIN
DECLARE a INT(10);
SET a = param_var + 1; if a = 0 then
SELECT 0;
elseif a % 2 = 0 then
SELECT 2;
else
SELECT 1;
end if;
END;// /* case语句的使用 */
delimiter //
DROP PROCEDURE sp_demo; //
CREATE PROCEDURE sp_demo(IN param_uid int(10))
BEGIN
case param_uid
when 0 then SELECT "这是0";
when 1 then SELECT "这是1";
else SELECT "没找到";
end case;
END; // /* while do..while的使用 */
delimiter //
DROP PROCEDURE sp_demo; //
CREATE PROCEDURE sp_demo(IN param_i int(10))
BEGIN
while param_i < 10
do
SELECT param_i;
set param_i=param_i+1;
end while;
END; // /* repeat的使用 */
delimiter //
DROP PROCEDURE sp_demo; //
CREATE PROCEDURE sp_demo(IN param_i int(10))
BEGIN
repeat
SELECT param_i;
set param_i = param_i + 1;
until param_i > 10
end repeat;
END; // /* loop的使用 */
delimiter //
DROP PROCEDURE sp_demo; //
CREATE PROCEDURE sp_demo(IN param_i int(10))
BEGIN LOOP_DEMO:loop
SELECT param_i;
set param_i = param_i + 1; if param_i > 5 then
leave LOOP_DEMO;
end if; end loop;
END; //

mysql - 简单的触发器和存储过程的更多相关文章

  1. mysql 查询表,视图,触发器,函数,存储过程

    1. mysql查询所有表: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名' AND  TAB ...

  2. mysql查看所有触发器以及存储过程等操作集合

    今天在做每个月定时扣费的功能 用到了Mysql的Event Scheduler 昨完之后发现一个问题 Event Scheduler 默认是不开启的 要在mysql内执行SET GLOBAL even ...

  3. 【MySQL笔记】触发器,存储过程和函数

    一.触发器 触发器(TRIGGER):是由事件来触发某个操作.当数据库系统执行这些事件时,就会激活触发器执行相应的操作.MySQL从5.0.2版本开始支持触发器. 触发事件:INSERT语句.UPDA ...

  4. MySQL拓展 视图,触发器,事务,存储过程,内置函数,流程控制,索引,慢查询优化,数据库三大设计范式

    视图: 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view tea ...

  5. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  6. MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁

    浏览目录: 1.视图 2.触发器 3.存储过程 4.函数 5.事物 6.数据库锁 7.数据库备份 1.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视 ...

  7. 关于mysql触发器和存储过程的理解

    内容源自:一篇很棒的 MySQL 触发器学习教程 一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊 ...

  8. 触发器 视图 存储过程 mysql常用函数

                                                                                                        ...

  9. mysql数据库从删库到跑路之mysql:视图、触发器、事务、存储过程、函数

    mysql:视图.触发器.事务.存储过程.函数 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果 ...

随机推荐

  1. POJ1159解题心得

    题目:http://poj.org/problem?id=1159 刚开始,从样例的特征去思考.总让我从回文数的角度去思考,想出几个方案,可都用了数据去检验,发现不行.如:ABCDDCB,BACDCA ...

  2. ALSA声卡笔记2---ASoC驱动框架

    1.简单了解一下ASOC 在嵌入式系统里面的声卡驱动为ASOC(ALSA System on Chip) ,它是在ALSA 驱动程序上封装的一层   分为3大部分,Machine,Platform和C ...

  3. Angular2 如何使用jquery

    网上找了很多版本尝试都不行,最后在stackoverflow上找到一个,尝试完美解决 具体操作步骤如下 1. 安装jquery npm install jquery 2.安装 type for jqu ...

  4. Cinder Backup备份

    cinder 备份提供了三种驱动服务: Ceph,TSM,Swift 其中默认备份驱动服务为swift cinder 驱动服务的配置在cinder.conf文件中 backup_driver=cind ...

  5. cento7.3下玩转sphinx

    cento7.5下玩转sphinx 1 安装依赖文件 yum install postgresql-libs unixODBC 2 下载 wget http://sphinxsearch.com/fi ...

  6. [Z] Shell中脚本变量和函数变量的作用域

    在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题. (1)Shell脚本中定义的变量是global的,其作用域从被定 ...

  7. 【图片】机器学习--名画风格 neural-style

    neural-style 学习画作风格,将风格施加到另外一张图片中 例如将名画<星夜>的风格施加到一副建筑照片中: 源码 https://github.com/jcjohnson/neur ...

  8. asp.net(c#)GridView实现鼠标悬停高亮显示

    搜索了一下,发现对于这种基本都使用girdview中的RowDataBound事件完成,下面看看网上提供的简单方法protected void GridView1_RowDataBound(objec ...

  9. hbase安装与配置-分布式

    HBASE安装与配置 备注: 1:本文在hadoop的完全分布式基础上部署hbase 2:本文使用的是小博主自己搭建的zookpeer服务,未使用hbase本身的zookpeer服务 本文内容在以下前 ...

  10. Java 循环遍历删除set list中的元素

    删除List和Set中的某些元素 错误代码的写法: Set<String> set = new HashSet<String>(); set.add("aaaaaa& ...