mysql存储过程与触发器_mysql的存储过程与触发器学习笔记

以下命令都在Mysql5.5中测试通过。

修改列类型:

alter table 表名 change 列名 列名 要修改的列类型;

修改列名:

alter table 表名 change 列名 要修改的列名 原来的类型;

添加一列:

alter table 表名 add column 要加的列名 要加的列名类型;

删除一列:

alter table 表名 drop column 要删除的列名;

Mysql函数的存储过程与触发器学习小结。

创建一个mysql函数命令如下:

复制代码 代码如下:

create function 函数名(参数名 参数类型)returns 返回类型

begin

statement;

end;

示例如下:

复制代码 代码如下:

create function gets(s int)returns int

begin

declare a int;//mysql中声明变量不需要@!!!跟其他数据库不太一样!!切记!!!

set @a=3;  //每句之后需加一个;不然报错!

return @a+s;   //要有返回语句!

end;

下面就可以直接调用了:gets(3);

再说存储过程,创建存储过程命令如下:

复制代码 代码如下:

create procedure 存储过程名(参数名 参数类型)returns 返回类型

begin

statement;

end;

存储过程和函数里面内容差不多,不过在调用的时候,存储过程需要这样调用:

call 存储过程名;就ok了!

再多说一句,因为函数可以返回一个表对象,所以可以在sql语句中直接调用函数,而存储过程不行!!!

下面说一下触发器;

在写触发器之前先建立两个表:

复制代码 代码如下:

create table Student(studentId int primary key auto_increment,name varchar(30))engine='InnoDB';

create table BorrowBook(BorrowBookId int primary key auto_increment,studentId int)engine='InnoDB';

在更新一个学生的学号时,学号更新相应的借书记录的学生学号;

创建更新触发器如下:

复制代码 代码如下:

create trigger updateTrigger before update on Student for each row

begin

update BorrowBook set studentId=NEW.studentId where studentId = Student.studentId;

end

在删除一个学生记录时,需要删除相应的借书记录

复制代码 代码如下:

create trigger deleteTrigger before delete on Student for each row

begin

delete from BorrowRecord where studentId=OLD.studentId;

end

以后只要你更新学生表或者删除学生的某个记录时,就会调用触发器程序了!!!

区别:

Mysql中使用auto_increment,而在sql server中使用identity;

Mysql中需要显式调用engine='InnoDB'来使数据库实现事务功能,而在oracle中是自动提交的!

sql server 中使用触发器时,会使用deleted和inserted表,而在mysql中是NEW 和OLD表;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值