4月24日作业

1 创建一张表,要求包含:主键约束,非空约束,唯一约束;然后插入数据测试3中约束的特点(截图展示结果)

create table ZYX(
	eid int primary key auto_increment , #主键约束
	ename varchar(20) UNIQUE, #唯一约束
	sex char(2) NOT NULL #非空约束
 );

(1)主键约束:唯一且非空  一个表中只能有一个主键

 (2)非空约束:字段的值不能为null, 可以重复 ,一个表中也可以有多个  非空约束

 (3)唯一约束:字段的值可以为null, 不可以重复 ,一个表中也可以有多个  唯一约束


2 使用转账案例,或者其他案例,模拟演示脏读,不可重复读,幻读,并给出解决方案(幻读除外),截图展示结果。

(1)模拟脏读:一个事务读取到了另一个事务中尚未提交的数据

解决方法:将全局的隔离级别进行提升为: read committed

set global transaction isolation level read committed;

   

(2)不可能重复读:一个事务中两次读取的数据内容不一致, 要求的是在一个事务中多次读取时数据是一致的. 这是进行 update 操作时引发的问题

 解决方法:将全局的隔离级别进行提升为: repeatable read

set global transaction isolation level repeatable read;

3)幻读:select 某记录是否存在,不存在,准备插入此记录,但执行 insert 时发现此记录已存在,无法插入,此时就发生了幻读。

解决办法:将事务隔离级别设置到最高 SERIALIZABLE ,以挡住幻读的发生

set global transaction isolation level SERIALIZABLE;

 

serializable 串行化可以彻底解决幻读,但是 事务只能排队执行,严重影响效率, 数据库不会使 用这种隔离级别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值