Oracle多用户同时修改同一记录,怎样保证该客户记录
2017-05-08 16:27
323 查看
首先你要了解什么叫做 “事务 transcation ” :一个事务包含一个或多个DML语句,是逻辑管理的工作单元(原子单元)。 注意:其中Commit, Rollback是显示的提交事务,而DDL语句是隐式的提交事务的。DDL语句的操作是没有办法回滚的。 当用户对数据进行修改时(DML操作),oracle会给数据分配两个 锁 ,一个是行排他锁 另一个是表共享锁 行排他锁:如果A用户对某个表的某一行进行修改时,会把该行分配一个”行排他锁“ 这样B用户就只能查看 不能修改了。但是B用户看到的数据确实老数据 , 那是因为A用户还没有结束该事务,换句话说A用户拿到了修改该行的所有权,但是怎么修改,修改之后会不会反悔 这些都是在A 提交该事务之前的 仅属于他个人的事情 而为了保证所有用户所看到数据的一致性, 在A用户 提交事务之前 大家看到的数据都是 老数据 举个例子: 1. 最开始 谁也没要修改的时候,数据是这样的: SQL> select empno , ename , sal from emp where empno= 7900; EMPNO ENAME SAL ---------- ---------- ---------- 7900 JAMES 950 2. A用户进行修改了,她就拿到了 这行的锁: SQL> update emp set sal=6000 where empno=7900; 1 row updated. SQL> select empno , ename , sal from emp where empno= 7900; EMPNO ENAME SAL ---------- ---------- ---------- 7900 JAMES 6000 现在只有A用户能够查看到,修改后的数据。 3. B用户进行查看: SQL> select empno , ename , sal from emp where empno= 7900; EMPNO ENAME SAL ---------- ---------- ---------- 7900 JAMES 950 4. B用户进行修改: SQL> update emp set sal=6000 where empno=7900; ......... 没有任何动静,因为该会话在等待A用户的提交。 过了十分钟后,A用户提交了 那么B立刻就抢到了这把锁。 ”如果多个用户同时修改同一客户记录,而且先后提交修改,Oracle 怎样保证该客户记录“ 就像按抢答器一样,就看是谁先得到这把”锁“
相关文章推荐
- 如果多个用户同时修改同一客户记录,而且先后提交修改,Oracle 怎样保证该客户记录
- oracle中的sys用户(修改密码)/////Oracle删除表空间的同时删除数据文件 ///// Oracle中如何保证用户只有一个session登录
- 如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁?
- 五、怎样修改oracle某个用户的密码
- oracle怎样将Scott中的表和记录copy到新建用户
- 解决同时修改同一SQL记录的问题
- 多个用户同时修改同一数据解决办法
- ORACLE新增,授权,修改,删除用户
- 忘记oracle的sys用户密码怎么修改
- oracle数据中记录被另一个用户锁住
- 查看并修改Oracle用户的密码(适用于10g,9i)
- 查看oracle 用户执行的sql语句历史记录
- 修改oracle用户密码永不过期修改
- 修改oracle用户密码永不过期修改
- 通过SessionID和用户名来保证同一个用户不能同时登录
- oracle 用户:创建并指定表空间、授权,连接用户,删除用户,修改,解锁,加锁、
- oracle创建表空间,删除表空间,同时pl/sql 创建用户的时候赋予的权限
- 忘记oracle的sys用户密码怎么修改
- Oracle用户表空间查看、修改…
- ORACLE 11g 实现审计用户登入登出<登陆退出>的详细记录