欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2024-01-17 12:47:28
...

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

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

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

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

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

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

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

准备相关表

  1. mysql> use test;
  2. mysql> create table userinfo(userid int,username varchar(10),userbirthday date);
  3. mysql> create table userinfolog(logtime datetime,loginfo varchar(100));
  4. mysql> describe userinfo;

1.MySQL触发器的实现:

  1. mysql> delimiter |
  2. mysql> create trigger beforeinsertuserinfo
  3. -> before insert on userinfo
  4. -> for each row begin
  5. -> insert into userinfolog values(now(),CONCAT(new.userid,new.username));
  6. -> end;
  7. -> |
  8. mysql> delimiter ;
  9. mysql> show triggers;

2.存储过程

  1. mysql> delimiter //
  2. mysql> create procedure spinsertuserinfo(
  3. -> puserid int,pusername varchar(10)
  4. -> ,puserbirthday date
  5. -> )
  6. -> begin
  7. -> insert into userinfo values(puserid,pusername,puserbirthday);
  8. -> end;
  9. -> //
  10. mysql> show procedure status like 'spinsertuserinfo';
  11. mysql> call spinsertuserinfo(1,'zhangsan',current_date);
  12. mysql> select * from userinfo;

3.自定义函数

  1. mysql> update userinfo
  2. -> set userbirthday='2000.01.01'
  3. -> where userid='1';
  4. mysql> drop function if exists fngetage;
  5. mysql> delimiter //
  6. mysql> create function fngetage(pbirthday date)
  7. -> returns integer
  8. -> begin
  9. -> return year(now()) - year(pbirthday);
  10. -> end
  11. -> //

4.视图

  1. mysql> create view viewuserinfo
  2. -> as select * ,fngetage(userbirthday) as userage from userinfo;
  3. mysql> select * from viewuserinfo;

清除日志记录

  1. mysql> truncate table userinfolog;
  2. mysql> delete from userinfolog;

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