让我们说我有一个procedure叫myproc.这是一个复杂的过程,我不能允许两个实例同时执行proc.
其实我这样做使用dbms_application_info.set_module:
procedure start_process is
begin
dbms_application_info.set_module('myproc', 'running');
end;
Run Code Online (Sandbox Code Playgroud)
并在运行过程之前验证:
select 'S'
from v$session v
where v.module = 'myproc'
and v.action = 'running';
Run Code Online (Sandbox Code Playgroud)
在数据库级别,有更好的方法来检查这个吗?
我有表EMPLOYEE(idEmp,Name,lastName,Adress),我希望以每次有人插入新员工的方式阻止此表,这个新ID必须连续到最后一个员工的ID ...
- >实际上,可能有几个人试图在同一时间插入新员工,这就是为什么我需要锁定表...这些是替代方案:
在行共享模式下锁定表EMPLOYEE.
锁定表EMPLOYEE在行独占模式下.
在共享模式下锁定表EMPLOYEE.
锁定表EMPLOYEE在共享行中独占.
锁定表EMPLOYEE处于独占模式.
我可以选择不止一个.