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; //

最新文章

  1. Xml的简单介绍和Xml格式
  2. myeclipse如何设置字体?
  3. 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解
  4. 使用Select命令创建菜单
  5. Java内存区域分析
  6. J​a​v​a​S​c​r​i​p​t​针​对​D​o​m​相​关​的​优​化​心​得
  7. js中的字典
  8. Git权威指南学习笔记(二)Git暂存区
  9. Python 安装matplotlib,six,dateutil,pyparsing 完整过程
  10. php curl 的几个实例
  11. Calendar使用方法
  12. error: Cannot find OpenSSL&#39;s &lt;evp.h&gt; Mac
  13. idea中springboot项目设置热部署
  14. J2EE导论 | 疑惑篇
  15. 安装站点时出现“连接数据库出现数据库server或登录password无效,无法连接数据库,请又一次设定”解决方法
  16. 数据库_存储过程简介(oracle版)
  17. uImage是什么
  18. BBS-文章详情页、评论、评论树
  19. Spring.net(二)----初探IOC容器
  20. Java Web开发中的转发和重定向的问题

热门文章

  1. Docker for windows 7 - 加载 docker images
  2. java实现时钟
  3. VMware 虚拟机中添加新硬盘的方法(转载)
  4. 几个常用的Linux监控脚本
  5. Win8电源选项中没有休眠这一项如何让Win8也能够休眠
  6. pycharm git工具与coding.net结合
  7. python找寻合适的日志库logging Handler——Handler自定义实现
  8. 读《分布式一致性原理》CURATOR客户端3
  9. swagger报No operations defined in spec!
  10. 【MongoDB】MongoDB 性能优化 - BI查询聚合