mysql5 存储过程和触发器示例
一、存储过程
1.1 语法
CREATE[DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]])[characteristic ...] routine_body proc_parameter:[ IN | OUT | INOUT ] param_name type characteristic:COMMENT 'string' | LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } routine_body: Valid SQL routine statement [begin_label:] BEGIN [statement_list] ……END [end_label]
1.2 示例
CREATE DEFINER=`xrh`@`%` PROCEDURE `proc_sumArticleVup`(IN `site` varchar(50), OUT `total` int)#BEGIN单条语句不能用BEGIN END;包裹,否则无法执行,会抛出 ERROR 1064 (42000): You have an error in your SQL syntax;
#check the manual that corresponds to your MySQL server version for the right syntax to useSELECT Sum(articleVup) into total FROM cms_article WHERE opSite=site limit 100;#END;
二、触发器:
2.1 语法
CREATE TRIGGER <触发器名称>{ BEFORE | AFTER }{ INSERT | UPDATE | DELETE } ON <表名称>FOR EACH ROW<触发的SQL语句>
2.2 示例
DROP TRIGGER IF EXISTS sslm_reply_insert_oper_check_data;
CREATE TRIGGER sslm_reply_insert_oper_check_data
AFTER INSERT ON
sslm_reply
FOR EACH ROW
BEGIN
if new.checkState='0' then
insert into oper_check_data (code,dataId,createTime) values ('sslm_reply', new.id, now());
end if;
END
DROP TRIGGER IF EXISTS sslm_reply_update_oper_check_data;
CREATE TRIGGER sslm_reply_update_oper_check_data
AFTER UPDATE ON
sslm_reply
FOR EACH ROW
BEGIN
if old.checkState='0' then
insert into oper_check_data (code,dataId,createTime) values ('sslm_reply', old.id, now());
end if;
END
作者:李小加
来源链接:https://www.cnblogs.com/101key/p/13645382.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。