美文网首页
MySQL数据库篇5

MySQL数据库篇5

作者: Hold丶张 | 来源:发表于2020-08-26 11:33 被阅读0次

本章主要为MySQL数据的:存储过程、视图、触发器。

关键字:procedure、call、view、trigger

1. 创建存储过程

            create procedure 存储过程名称()

            begin

                     内容;

            end;

            示例:

                    create procedure TestName()

                    begin

                            select * from student;

                    end;

2. 执行存储过程

           call 存储过程名称;

3. 创建视图

           create view 视图名称 as  内容;

4. 使用视图

           select * from 视图名称;

-------------------------------------------------------触发器---------------------------------------------------------

1. before的用法(before:在......之前,先做什么操作)

      create trigger 触发器名称

      before insert on 表名 for each row

      begin

      if new.限定条件1

      then set new.条件1;

      end if;

      if new.限定条件2;

      then set new.条件2;

      end if; end;

    示例:   create trigger TestTrigger

                  before insert on student for each row

                  begin

                  if new.age<0

                  then set new.age = 0;

                  end if;

                  if new.age>100;

                  then set new.age = 100;

                  end if; end;

当年龄小于0时,默认为0,当年龄大于100时,默认为100

2. after的用法(after:在......之后,然后做什么操作)

      create trigger 触发器名称

      after insert on 表名1 for each row

      begin

      insert into 表名2(字段1,字段2,......,字段n)

      values (new.表名1.字段1,new.表名1.字段2,......new.表名1.字段n);

      end;

示例:      create trigger TestTrigger

                 after insert on student1 for each row

                 begin

                      insert into student2(Id2,Name2,Age2,Sex2)

                      values (new.Id1,new.Name1,new.Age1,new.Sex1);

                 end;

在 student1 中插入数据后,往 student2 中插入相同数据

3. 在删除表1之前,先删除表2

      create trigger 触发器名称

      before delete on 表1 for each row

      begin

      delete from 表2 where 条件;

      end;

例:      create trigger TestTrigger

                  before delete on student for each row

                begin

                  delete from chengji where old.sid = csid;

                end;

在删除 student 表内数据之前,先删除 chengji 表内数据(student为主表,chengji为从表,old.sid为主表主键,csid为从表外键)

4. 在更新表1数据之后,更新表2数据

      create trigger 触发器名称

      after update on 表1 for each row

      begin

      限定条件1 or 限定条件2

      then

      update 表2 set 新数据 where 条件;

      end if;end;

例:      create trigger TestTrigger

                  after update on student1 for each row

                begin

            if old.sname1 != new.sname1

            then

                  update student2 set student2.sname2 = new.sname1

                          where old.sid1 = student2.sid2;

                end if;end;

在更新 student1 表内数据之后,更新 student2 表内数据(student2.sname2 = new.sname1 为把student2中的sname2 更新为student1中新更改的sname1数据)

5. old 与 new 的区别

      old:旧数据,在这个表内已经存在的数据

      new:新数据,从这个表内添加的新数据,或更新的数据

6. 查看触发器

      show triggers;

7. 删除触发器

      drop trigger 触发器名称;

上一章:MySQL数据库篇4

相关文章

网友评论

      本文标题:MySQL数据库篇5

      本文链接:https://www.haomeiwen.com/subject/qsfojktx.html