mysql 触发器loop使用_mysql 储存过程、触发器的创建、删除及使用

本文详细介绍了数据库中的触发器和存储过程的创建、删除和使用方法。触发器用于在特定数据库事件(如INSERT、DELETE、UPDATE)发生时执行自动操作,例如在插入userInfo表前更新字段。存储过程则是预编译的SQL语句集合,支持参数传递,可用于执行复杂的数据库操作。文章通过实例展示了如何创建和调用这两个数据库元素,强调了它们在日志记录、数据验证等场景中的应用。
摘要由CSDN通过智能技术生成

##################################触发器的创建、删除及使用##############################

##触发器创建与删除语法规则

1. DELIMITER//

2. CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name

3. FOR EACH ROW

4. BEGIN

5. trigger_stmt

6. END;

7. //

注释:1)1、7必须成对出现,在其中//(分隔符设置)可以换成$$

2)trigger_name为触发器的名称

3)trigger_time什么时候触发创建的触发器,使用的关键字BEFORE,AFTER

4)trigger_event引发触发器的事件 如UPDATE、DELETE、DROP

5)tbl_name把触发器建立在那张表上面

6)FOR EACH ROW为遍历第一行记录

7)BEGIN ..... END成对出现,操作的复合语句 如UPDATE、DELETE、INSERT,

8)trigger_stmt 为一些条件判断语句,在其中一般有对表的UPDATE、DELETE、INSERT操作

#########实例########

##删除userInfo的触发器

DROP TRIGGER trigger_userInfo;

##创建userInfo的触发器

DELIMITER$$

CREATE TRIGGER trigger_userInfo

BEFORE INSERT ON userInfo

FOR EACH ROW

BEGIN

INSERT INTO test_trigger_table(id, NAME) VALUES (6, 'ABC');

##set new.userName='111';##在插入userInfo之前把userName字段插入值修改为111

##不允许使用select,DROP语句.如select now()或DROP TABLE test_trigger_table;

END;

$$

SELECT * FROM test_trigger_table;

##触发器的使用:一般在打印服务器日志,人员操作日志等

###############存储过程的创建、删除及使用##########################

##语法:

##DROP PROCEDURE procedure_name

##创建无参存储过程

DELIMITER//

CREATE PROCEDURE procedure_name()

BEGIN

/*此存储过程的正文*/

END;

//

##调用无参存储过程

CALL procedure_name();

##创建有参存储过程

DELIMITER//

CREATE PROCEDURE procedure_name(IN|OUT param dataType)

DECLARE variable dataType;

BEGIN

/*此存储过程的正文*/

END;

//

##注释:in表示传入但可被存储过程更改

#out表示参数将被传出或返

#param参数名

#dataType为参数类型,注:varchar是要定义长度,如 in v_input varchar(20)才一个完整的形式输入参数

#declare为声明变量区域

#begin .....end为复合语句块

##调用有参存储过程

CALL procedure_name(param);

##实例1无参存储过程(查询userInfo中userName为111的对象记录)

DELIMITER//

CREATE PROCEDURE pro_select_userInfo()

BEGIN

SELECT * FROM userInfo WHERE userName='111';

END;

//

##调用无参存储过程

CALL pro_select_userInfo();

##删除储存过程

##drop PROCEDURE procedure_para_name1;

DELIMITER$$

CREATE PROCEDURE procedure_para_name1 (IN param_name INTEGER)

BEGIN

DECLARE userName1 VARCHAR(20);

IF param_name=5 THEN

SELECT userName INTO userName1 FROM userInfo WHERE userId=param_name;

ELSE

SET userName1='PHP';

END IF;

SELECT userName1;

END;$$

##调用有参存储过程

CALL procedure_para_name7(5);

##注释:括号内参数创建此存储过程时传入的参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值