什么是 SAP ABAP 系统中的 Optimistic Locks

简介: 什么是 SAP ABAP 系统中的 Optimistic Locks

在业务应用程序中,虽然很多订单数据以更改模式(change mode)显示,但该数据被更改的可能性并不高。


如果不同用户同时访问数据,则锁定过程必须保证数据更改的一致性。


SAP 引入了锁概念(“enqueue”),用于 ABAP 程序中的锁定。当数据更改的可能性很高时,使用 pessimistic locking(悲观锁)有效。


但考虑到在任何给定的时间点,数据只能在多个并行对话框之一中显示为可更改状态。


在这种情况下,引入除了 pessimistic locking 之外的另一种锁机制就显得有必要了。


Optimistic Locks(乐观锁) 允许在所有并行对话框中将界面切换成可编辑状态。


然而,业务应用程序必须意识到,在用户自己的更改生效之前,最初显示的数据可能已经发生了更改。


锁定过程必须能够检测到这种情况,以便业务应用程序有可能采取冲突解决策略。


除了锁模式 S、E 和 X 之外,还存在乐观锁的锁模式 O。


如果用户以更改模式显示数据,则设置 Optimistic Locks(模式 O)。


同一对象上的乐观锁不会发生冲突。


如果用户想要保存(更改的)数据,则必须将乐观锁转换为排它锁(模式E)。


该转换是使用锁定模式 R 实现的。如果有人之前在对象上设置了非乐观锁,或者另一个 O 锁已被提升,则转换会失败。


如果升级成功,则删除该对象上的其他乐观锁,并且该锁表现为 E 锁。


乐观锁与其他锁的区别在于,竞争的乐观锁首先是相互兼容的,并不相互排斥。 如果发生锁冲突,则稍后才会验证。 对于锁所有者来说,锁冲突表现为锁的外部更改(当前锁用户可注意到),从而使乐观锁失效。

相关文章
|
1月前
|
存储
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
21 0
|
1天前
|
数据库
SAP系统不能启动解决方案
SAP系统不能启动解决方案
|
1天前
|
Unix
SAP R/3系统的启动和关闭
SAP R/3系统的启动和关闭
|
1天前
|
Oracle 关系型数据库 Unix
SAP系统拷贝 UNIX + Oracle
SAP系统拷贝 UNIX + Oracle
|
1月前
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
16 1
|
1月前
|
人工智能
Suno AI 生成 SAP ABAP 顾问之歌
Suno AI 生成 SAP ABAP 顾问之歌
22 1
|
1月前
|
存储 安全 数据库
SAP ABAP 中数据类型 xstring 的使用介绍
SAP ABAP 中数据类型 xstring 的使用介绍
29 0
|
1月前
|
Java BI API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
19 0
|
1月前
|
存储
ABAP 系统中一个字符到底占据几个字节存储空间
ABAP 系统中一个字符到底占据几个字节存储空间
20 1
|
1月前
什么是 SAP ABAP 里的 Subscreen
什么是 SAP ABAP 里的 Subscreen
16 1
什么是 SAP ABAP 里的 Subscreen