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. 查看Unix/Linux的CPU个数和内存大小,系统位数(转载)

    一.AIX 1.查看CPU数: (1) smtctl 从AIX5.3起,对于power5的机器,系统引入了SMT(Simultaneousmulti-threading)的功能,其允许两个处理线程在同 ...

  2. 第一个Net+Mysql的例子,比想象的简单很多

    1.window下安装mysql,比较简单,完全的图形化界面,不用看文档一路点击下来也ok,注意中间几个configtype选项就可以. 2.安装MySql Net的驱动程序程序,安装完后就是几个dl ...

  3. UVa-146 - ID Codes(下一个排列)

    /* ID Codes It is 2084 and the year of Big Brother has finally arrived, albeit a century late. In or ...

  4. AOP 动态织入的.NET实现

    AOP(面向切面编程:Aspect Oriented Programming)为诸如日志记录.性能统计.安全控制.事务处理.异常处理等与具体业务逻辑无关,却需要在全局范围进行执行的功能提供了一种良好重 ...

  5. 连接ES的Java项目报Too many open files错误

    启动后查询open files 数量 lsof -p TOMCAT_PID | grep wc -l 结果大概是一千多,但是短短数小时后就会涨到8k以上,所以使用网上很多朋友通过执行ulimit -n ...

  6. react组件生命

    组件的生命周期主要由三个部分组成: Mounting:组件正在被插入DOM中 Updating:如果DOM需要更新,组件正在被重新渲染 Unmounting:组件从DOM中移除 React提供了方法, ...

  7. [Python] Argparse module

    he recommended command-line parsing module in the Python standard library 1. Basic import argparse p ...

  8. NFS共享权限问题

    //所有web集群节点的用户统一uid 例如888,用户最好也统一 Apache server: useradd -u 888 -s /sbin/nologin -M www chown -R www ...

  9. C++ primer plus

    给cout指针,默认打印指针地址,但如果指针的类型的char*,将打印指向的字符串,如果要显示的是字符串的地址,将指针强制转换为另一种类型 char* animal cout << ani ...

  10. 关于微软的.NET版本系列

    .net的不同版本的区分,感觉十分坑,搞开发的不能还去研究他们的版本含义或差异吧!下面为整理的一些相关内容: 一..NET的那些版本 .net framework 版本是可以向后兼容的,安装高版本的可 ...