Oracle 事务

Oracle事务是数据库操作的逻辑单位,确保ACID特性:原子性、一致性、隔离性和持久性。通过COMMIT、ROLLBACK和TRANSACTION语句进行提交、回滚和设置事务状态。使用READ ONLY或READ WRITE定义事务读写权限,ISOLATION LEVEL调整隔离级别,LOCK TABLE则用于锁定表以确保数据完整性。

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

事务在数据库中是工作的逻辑单元,单个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制,可以确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不执行。

事务的四大特性ACID

  • 原子性(Atomicity):一个事务里所包含的SQL语句是一个整体,是不可分割的,要么不做,要么都做。
  • 一致性(Consistency):事务开始时,数据库中的数据是一致的,事务结束时,数据库的数据也应该是一致的。
  • 隔离性(Isolation):数据库允许多个并发事务同时对其中的数据进行读写和修改的能力,隔离性可以防止事务在并发执行时,由于他们的操作命令交叉执行而导致的数据不一致状态。
  • 持久性(Durability):当事务结束后,它对数据库中的影响是永久的,即便系统遇到故障的情况下,数据也不会丢失。

COMMIT语句(提交事务)

COMMIT [ WORK ] [ COMMENT clause ] [ WRITE clause ] [ FORCE clause ];

ROLLBACK语句(回滚事务)

ROLLBACK [ WORK ] [ TO [SAVEPOINT] savepoint_name  | FORCE 'string' ];

TRANSACTION语句(设置事务)
SET TRANSACTION 语句可以用来设置事务的各种状态,比如只读、读/写、隔离级别,为事务分配名称或将事务分配回滚段等等。

SET TRANSACTION [ READ ONLY | READ WRITE ]
                [ ISOLATION LEVEL [ SERIALIZE | READ COMMITED ]
                [ USE ROLLBACK SEGMENT 'segment_name' ]
                [ NAME 'transaction_name' ];

● READ ONLY:可以将事务设置为只读事务。

● READ WRITE:可以将事务设置为读/写事务。

● ISOLATION LEVEL: 如果指定,它有两个选项:

    1.ISOLATION LEVEL SERIALIZE:如果事务尝试更新由另一个事务更新并未提交的资源,则事务将失败。

    2.ISOLATION LEVEL READ COMMITTED:如果事务需要另一个事务持有的行锁,则事务将等待,直到行锁被释放。

● USE ROLLBACK SEGMENT:可选的。 如果指定,它将事务分配给由 ‘segment_name’ 标识的回退段,该段是用引号括起来的段名称。

● NAME:为 ‘transaction_name’ 标识的事务分配一个名称,该事务用引号括起来

LOCK TABLE语句(锁表)
LOCK TABLE 语句可以用来锁定表、表分区或表子分区。

LOCK TABLE tables IN lock_mode MODE [ WAIT [, integer] | NOWAIT ];

参数:
1、tables:用逗号分隔的表格列表。
2、lock_mode:它是以下值之一:

lock_mode描述
ROW SHARE允许同时访问表,但阻止用户锁定整个表以进行独占访问。
ROW EXCLUSIVE允许对表进行并发访问,但阻止用户以独占访问方式锁定整个表并以共享方式锁定表。
SHARE UPDATE允许同时访问表,但阻止用户锁定整个表以进行独占访问。
SHARE允许并发查询,但用户无法更新锁定的表。
SHARE ROW EXCLUSIVE用户可以查看表中的记录,但是无法更新表或锁定SHARE表中的表。
EXCLUSIVE允许查询锁定的表格,但不能进行其他活动。

WAIT:它指定数据库将等待(达到指定整数的特定秒数)以获取 DML 锁定。
NOWAIT:它指定数据库不应该等待释放锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值