> 데이터 베이스 > MySQL 튜토리얼 > 实现MySQL触发器的实际操作步骤

实现MySQL触发器的实际操作步骤

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-07 16:13:32
원래의
1173명이 탐색했습니다.

以下的文章主要讲述的是实现MySQL触发器的实际操作步骤、以及存储过程、自定义函数与视图的简单示例介绍,如果你对MySQL触发器的实际操作步骤以及存储过程的实际操作感兴趣的话,你就可以浏览以下的文章了,示例实现如下效果: test数据库有userinfo用户信息

以下的文章主要讲述的是实现MySQL触发器的实际操作步骤、以及存储过程、自定义函数与视图的简单示例介绍,如果你对MySQL触发器的实际操作步骤以及存储过程的实际操作感兴趣的话,你就可以浏览以下的文章了,示例实现如下效果:

test数据库有userinfo用户信息表 和userinfolog用户信息日志表

1.建立一个userinfo表新增记录时的触发器 将新增日志加入到userinfolog

2.建立一个向userinfo表新增记录的存储过程

3.根据userinfo表的出生日期字段 我们将建立一个简单算得年龄的自定义函数

4.创建一个userinfo的视图 调用年龄函数

准备相关表

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> use test;  </span></span></li>
<li>
<span>mysql</span><span class="tag">></span><span> create table userinfo(userid int,username varchar(10),userbirthday date);  </span>
</li>
<li class="alt">
<span>mysql</span><span class="tag">></span><span> create table userinfolog(logtime datetime,loginfo varchar(100));  </span>
</li>
<li>
<span>mysql</span><span class="tag">></span><span> describe userinfo; </span>
</li>
</ol>
로그인 후 복사

1.MySQL触发器的实现:

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> delimiter |  </span></span></li>
<li>
<span>mysql</span><span class="tag">></span><span> create trigger beforeinsertuserinfo  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> before insert on userinfo  </span>
</li>
<li>
<span>-</span><span class="tag">></span><span> for each row begin  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> insert into userinfolog values(now(),CONCAT(new.userid,new.username));  </span>
</li>
<li>
<span>-</span><span class="tag">></span><span> end;  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> |  </span>
</li>
<li>
<span>mysql</span><span class="tag">></span><span> delimiter ;  </span>
</li>
<li class="alt">
<span>mysql</span><span class="tag">></span><span> show triggers; </span>
</li>
</ol>
로그인 후 복사

2.存储过程

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> delimiter //  </span></span></li>
<li>
<span>mysql</span><span class="tag">></span><span> create procedure spinsertuserinfo(  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> puserid int,pusername varchar(10)  </span>
</li>
<li>
<span>-</span><span class="tag">></span><span> ,puserbirthday date  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> )  </span>
</li>
<li>
<span>-</span><span class="tag">></span><span> begin  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> insert into userinfo values(puserid,pusername,puserbirthday);  </span>
</li>
<li>
<span>-</span><span class="tag">></span><span> end;  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> //  </span>
</li>
<li>
<span>mysql</span><span class="tag">></span><span> show procedure status like 'spinsertuserinfo';  </span>
</li>
<li class="alt">
<span>mysql</span><span class="tag">></span><span> call spinsertuserinfo(1,'zhangsan',current_date);  </span>
</li>
<li>
<span>mysql</span><span class="tag">></span><span> select * from userinfo; </span>
</li>
</ol>
로그인 후 복사

3.自定义函数

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> update userinfo  </span></span></li>
<li>
<span>-</span><span class="tag">></span><span> set </span><span class="attribute">userbirthday</span><span>=</span><span class="attribute-value">'2000.01.01'</span><span> </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> where </span><span class="attribute">userid</span><span>=</span><span class="attribute-value">'1'</span><span>;  </span>
</li>
<li>
<span>mysql</span><span class="tag">></span><span> drop function if exists fngetage;  </span>
</li>
<li class="alt">
<span>mysql</span><span class="tag">></span><span> delimiter //  </span>
</li>
<li>
<span>mysql</span><span class="tag">></span><span> create function fngetage(pbirthday date)  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> returns integer  </span>
</li>
<li>
<span>-</span><span class="tag">></span><span> begin  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> return year(now()) - year(pbirthday);  </span>
</li>
<li>
<span>-</span><span class="tag">></span><span> end  </span>
</li>
<li class="alt">
<span>-</span><span class="tag">></span><span> // </span>
</li>
</ol><br>
로그인 후 복사

4.视图

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> create view viewuserinfo  </span></span></li>
<li>
<span>-</span><span class="tag">></span><span> as select * ,fngetage(userbirthday) as userage from userinfo;  </span>
</li>
<li class="alt">
<span>mysql</span><span class="tag">></span><span> select * from viewuserinfo; </span>
</li>
</ol>
로그인 후 복사

清除日志记录

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> truncate table userinfolog;  </span></span></li>
<li>
<span>mysql</span><span class="tag">></span><span> delete from userinfolog; </span>
</li>
</ol>
로그인 후 복사

以上的相关内容就是对MySQL触发器的介绍,望你能有所收获。


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿