存储过程与触发器的简单介绍

1.存储过程

存储过程在数据库中的作用

存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它
相对于直接使用SQL 语句,在应用程序中直接调用存储过程有以下好处:  
(1)减少网络通信量。  。  
(2)执行速度更快。
(3)更强的适应性。   

(4) 分布式工作。

存储过程是数据库为了实现完成某些特定内容的SQL语句的集合


缺点:  
1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 调用,等等,这时候估计比较繁琐了。  
2.可移植性差

由于存储过程将应用程序绑定到 MySQL,因此使用存储过程封装业务逻辑将限制应用程序的可移植性

创建对表bookcard的存储过程,实现查询指定deposit值的功能

    use carddb;
    create procedure date_pre1(in icid INT,out deposit1 char(20))
    begin 
    select deposit from bookcard where cid=icid into deposit1;
    END
    call date_pre1(1001,@deposit2);
    select @deposit2;

2.触发器

触发器是一种用来保障参照完整性的特殊的存储过程,它维护不同表中数据间关系的有关规则。当对指定的表进行某种特定操作(如:Insert,Delete或Update)时,触发器产生作用。触发器可以调用存储过程。

触发器是一种特殊的存储过程

创建对表bookcard的触发器,实现在表bookcard中插入数据时,会自动将操作保存在日志表中

    use carddb;
    create trigger trg_book_inser after insert on bookcard FOR EACH
    ROW
    begin 
    insert into o_log1(o_date,o_num,o_type)VALUES(NOW(),new.cid,'insert');
    END;


你可能感兴趣的:(Mysql)