创建存储过程以及触发器

简介: 创建存储过程以及触发器

存储过程

–Mysql

show database

show tables

show columns from table_Name

show status

show create database

show create table

show grants

show errors

show warnings

REGEXP

–创建存储过程

create  procedure procedurename(

       OUT pl decimal(8,2),

       OUT ph DECIMAL(8,2),

       OUT pa DECIMAL(8,2)

)

BEGIN

  SELECT Min(pro_price)

  into pl

  from products;

  select Max(pro_price)

  into ph

  from products;

  select Avg(pro_price)

  into pa

  from products;

end;

–调用存储过程

call procedurename(@pricelow,@pricehigh,@priceaverage)

–显示数据

select @priceaverage

select @pricehigh,2pricelow,@priceaverage;

–有输入与输出的存储过程

create procedure ordertotal(

      IN onumber INT,

      OUT ototal DECIMAL(8,2)

)

BEGIN

  SELECT Sum(item_price*quantity)

  from orderitems

  where order_num = onumber

  into ototal

end;

–调用存储过程

call ordertotal(2001,@total);

–显示数据

select @total

–触发器

/*唯一的触发器名

触发器关联的表

触发器响应的活动(DELETE 、INSERT 、UPDATE)

触发器何氏执行(处理之前或之后)

*/

create or replace trigger tri_tablename_operation

after operation on table_name

for each row

 …

–删除触发器

drop trigger truggername

–INSERT 触发器

/*1.在INSERT触发器代码内,可引用一个名为NEW的虚拟表,访问被插入的行

2.在BEFORE INSERT触发器中,new中的值也可以被更新(允许更改被插入的值)

3.对于auto_increment列,NEW在insert执行之前包含0,在INSERT执行之后包含新的自动生成值

*/

–eg:

create or replace trigger tri_table_name_operation

after insert on table_name

for each row select NEW.ORDER_NUM

create table A

( id int,

 name varchar(12)

)

select * from AA

create or replace trigger TRI_A_INSERT

after insert on A

for each row

--DELETE触发器

1.在delete触发器代码内,可以引用一个名为OLD的虚拟表

访问被删除的行

2.OLD的值全都是只读的,不能更新

--eg:

create or replace trigger tri_tablename_del

before delete on orders

for each row

  begin

      insert into tablename (cloumn1,column2…)

      values(column1,column2…)

   end;

–创建一张表和AA结构一样

create table BB as select * from AA where 1=2

–创建触发器

create or replace trigger TRI_AA_DEL

 after delete on AA

 for each row

begin

 insert into BB (nub, name, age) values (:old.nub,:old.name,:old.age);

end;

–测试

select * from AA

delete from AA where age = 12;

commit;

select * from BB

–UPDATE触发器

1.在update触发器代码内,可以引用一个名为OLD虚拟表访问以前的值,

引用一个名为NEW的虚拟表访问更新的新的值

2.在before update触发器中,NEW中的值可能也被更新(允许更改将要用于UPDATE语句中的值)

3.OLD中的值全都是只读的,不能更新


相关文章
|
7月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
7月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(1)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
5月前
|
存储 SQL 数据库
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
这篇文章介绍了数据库中触发器的设计概念,包括创建、修改、删除触发器的方法,并通过实验内容教授如何使用SQL命令创建DML触发器以及如何利用触发器实现数据的完整性和自动化处理。
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
|
6月前
|
存储 SQL 关系型数据库
(十四)全解MySQL之各方位事无巨细的剖析存储过程与触发器!
前面的MySQL系列章节中,一直在反复讲述MySQL一些偏理论、底层的知识,很少有涉及到实用技巧的分享,而在本章中则会阐述MySQL一个特别实用的功能,即MySQL的存储过程和触发器。
120 0
|
6月前
|
存储 SQL 数据库
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
|
7月前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
7月前
|
存储 SQL 数据库
SQL 语言:存储过程和触发器
SQL 语言:存储过程和触发器
104 6
|
7月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(3)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
7月前
|
存储 SQL 关系型数据库
MySQL存储过程_触发器_游标——Baidu Comate
MySQL存储过程_触发器_游标——Baidu Comate
52 0
|
7月前
|
存储 关系型数据库 MySQL
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(4)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】

热门文章

最新文章