mysql 存储过程 互斥_mysql中的存储过程和事务隔离

※存储过程

存储过程是保存在数据库上的一段可执行代码。

1、定义存储过程的语法是:

Create procedure sp_name (参数..)

Begin

SQL语句

End;

2、调用它的方法:

Call sp_name(参数…); //空参时则括号中不填内容

3、演示

1)不带参数

定义(delimiter用于定义结束符):

DELIMITER $$

CREATE PROCEDURE p1()

BEGIN

INSERT INTO person2 VALUES('P05','李四',0);

SELECT * FROM person2;

END$$

DELIMITER ;

调用:

call p1();

2)带输入参数

DELIMITER $$

CREATE PROCEDURE p2(in id varchar(32), in nm varchar(30) )

BEGIN

INSERT INTO person2 VALUES(id,nm,0);

SELECT * FROM person2;

END$$

DELIMITER ;

call p2('P06','张飞');

CALL p2('P07','刘备');

3) 带输入、输出参数

定义:

DELIMITER $$

CREATE PROCEDURE p3(in id varchar(32), in nm varchar(30), out num int )

BEGIN

INSERT INTO person2 VALUES(id,nm,0);

SELECT count(*) into num FROM person2;

END$$

DELIMITER ;

调用:

CALL p3('P08','关羽',@aa); //一个@为用户变量,两个@为系统变量

输出返回值(输出参数)

SELECT @aa;

//输出系统变量“@@version”的值

SELECT @@VERSION--------我的是输出5.6.22-log

※查询内容区分大小写

mysql查询默认是不区分大小写的 如:

select * from table_name where a like 'a%'

select * from table_name where a like 'A%'

select * from table_name where a like 'a%'

select * from table_name where a like 'A%'

效果是一样的。

要让mysql查询区分大小写,可以:

select * from table_name where binary a like 'a%'

select * from table_name where binary a like 'A%'

select * from table_name where binary a like 'a%'

select * from table_name where binary a like 'A%'

也可以在建表时,加以标识

create table table_name(

a varchar(20) binary

);

※事务: 一个事务只会有一个结果,要么成功,要么失败。

举例:

P09,'赵子龙' 一次买了两辆车,需要把赵子龙的信息存储到person2表,同时还要把两辆车的信息存储到car表-----两个表的存储动作就是一个事务,要么成功(两个表的信息都成

功存储), 要么失败(只要其中一个表的一条数据存储失败,其它表的信息都不能存储进去,如果存进去则要还原)。

类似的例子,还有:银行转账! 销售单和销售明细!

SQL演示:

START TRANSACTION; //开启事务

DELETE FROM person2 WHERE id='P04';

DELETE FROM person2 WHERE id='P05';

ROLLBACK/COMMIT; //回滚/提交-------------事物一旦进行了提交,数据就无法再回滚了;

START TRANSACTION; //开启事务

INSERT INTO person2 VALUES('P09','赵子龙','1');

INSERT INTO car VALUES('C007','BMW',50,'P09');

INSERT INTO car VALUES('C008','QQ',7,'P09');

ROLLBACK/COMMIT; //回滚/提交

DELETE FROM car WHERE id='C007';

DELETE FROM car WHERE id='C008';

DELETE FROM person2 WHERE id='P09';

※事务的隔离

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值