Database oracle中多用户dml/提交场景

Database oracle中多用户dml/提交场景,database,oracle,concurrency,transactions,commit,Database,Oracle,Concurrency,Transactions,Commit,oracle如何处理多个用户在同一数据对象上执行的dml语句?。假设 如果有一个名为EMP(empname varchar2(30))的空表,并且用户“a”在其中创建一个条目 使用 insert into emp values('A'); 但还没有做出承诺 如果登录到同一数据库的另一个用户“B”提交,他/她是否会看到“A”执行的dml操作(即EMP表中的“A”) 与本主题相关的其他场景/链接将不胜感激。 提前感谢。在您提交之前,您不会在会话之外看到事务。如果另一个用户登录,那么他们将看到该表在

oracle如何处理多个用户在同一数据对象上执行的dml语句?。假设

如果有一个名为
EMP(empname varchar2(30))的空表
,并且用户“
a
”在其中创建一个条目

使用

insert into emp values('A');
但还没有做出承诺

如果登录到同一数据库的另一个用户“
B
”提交,他/她是否会看到“
A
”执行的dml操作(即
EMP
表中的“
A
”)

与本主题相关的其他场景/链接将不胜感激。
提前感谢。

在您提交之前,您不会在会话之外看到事务。如果另一个用户登录,那么他们将看到该表在其上次提交状态时存储在数据库中的状态。这就是撤消空间、重做日志等的原因。在您的场景中,即使B提交了A的事务,用户B也不会看到A的事务,因为A没有提交其更改。

在您提交之前,在会话之外不会看到事务。如果另一个用户登录,那么他们将看到该表在其上次提交状态时存储在数据库中的状态。这就是撤销空间、重做日志等的原因。在您的场景中,用户B不会看到A的事务,即使B已经提交了他的事务,因为A尚未提交其更改。

有关Oracle中数据并发和事务的完整详细信息,请参阅。

有关Oracle中数据并发和事务的完整详细信息,请参阅。

即使未提交,多个insert dml操作也可能发生冲突。如果上面的insert into emp是插入到唯一索引列(例如,主键)中,则在提交或回滚之前,用户B无法插入相同的值-它将阻塞。因此,在某种意义上,用户B“看到”了a未提交的插入,尽管用户B无法选择a插入的值。

即使未提交,多个插入dml操作也可能发生冲突。如果上面的insert into emp是插入到唯一索引列(例如,主键)中,则在提交或回滚之前,用户B无法插入相同的值-它将阻塞。因此,在某种意义上,用户B“看到”了a未提交的插入,尽管用户B无法选择a插入的值