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

来源:互联网 发布:java string默认编码 编辑:程序博客网 时间:2024/06/08 17:13
事务的特点
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
行级只读锁























0 0
原创粉丝点击