PL/SQL更改数据和管理事务

本文详细介绍了数据库事务的四大特性(原子性、一致性、隔离性和持久性),并深入探讨了事务的生命周期及其如何通过不同类型的锁来保障数据的一致性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务的特点
1 原子性 最小的执行单位
2 一致性 要么就是开始状态,要么是最终状态,没有中间状态
3 隔离性 外部看不到事务的内部细节
4 常见性 事务成功会保存下来,其他事情影响不到


事务的生命周期
1事务自动开始,第一行SQL或者上一个事务完成后自动启动下一个事务


2什么时候结束?提交(commit)或者回滚(rollback)


3 DDL语言 属于自动提交 create alter drop truncate


4部分回滚 savepoint设置保存点,只回滚到保存点。


锁 数据库系统通过一种机制,用来保障数据的安全可靠


分类1:内部锁(Oracle内部的事情) DDL锁 DML锁


分类2:S 全表只读锁 乐观锁  X 全表排他锁 悲观锁 RS 行级只读锁  RX 行级排他锁  SRX 全表只读行级排他锁


S 全表只读锁share 乐观锁 只有当前会话能操作该表,其他会话只能用(select)此表,不能做增删改行为
    create table XXX(......)
X 全表排他锁exclusive 悲观锁 独占锁 只有当前会话能操作该表,其他会话不能读写,必须等
    alter table XXX  ddd 列名 数据类型 ;如果数据量非常大,加约束将会导致操作时间变得很长
RS 行级只读锁row share 只有当前会话能操作该表,其他会话可以操作(增删改查)其他记录或者读取(select)这几条记录
    update delete where 符号条件的列将会被锁定只读  其他会话查询到这几条记录增删改前的记录
整张表的记录全表被锁定 还是只能算行级锁
RX 行级排他锁row exclusive 只有当前会话能操作这几条记录,其他会话可以操作(增删改查)其他记录。
 insert 表名(字段名) values(值);   被插入的记录是排他锁锁定的,其他会话不能查询到这几条记录
SRX 全表只读行级排他锁share row exclusive 只有当前会话可以操作这几条记录,其他会话可以读取读取(select)其他记录。


分类3:行级锁 表级锁  数据库级锁


selecr * from 表名
 where 条件 for update
行级只读锁























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值