本人初学 向各位学习
是这样..
比如在服务器数据库中一个表中有一数量列
两个用户从不同客户端连接数据库后 同时对表进行update操作(比如 源数据=源数据+X 而且操作非常的同时)。
这样就会出现问题。
我想问的是1.ORACLE自身有没有防止类似操作的功能,如果没有 我该如何做才能防止此类问题。
2.update时是不是也会对表加锁,如果会加的话,两个用户单纯执行update时是不是就不会出现问题(其中一个用户被警告),但是ORACLE如何判断让哪个用户操作呢(前提是时间完全相同)。
是这样..
比如在服务器数据库中一个表中有一数量列
两个用户从不同客户端连接数据库后 同时对表进行update操作(比如 源数据=源数据+X 而且操作非常的同时)。
这样就会出现问题。
我想问的是1.ORACLE自身有没有防止类似操作的功能,如果没有 我该如何做才能防止此类问题。
2.update时是不是也会对表加锁,如果会加的话,两个用户单纯执行update时是不是就不会出现问题(其中一个用户被警告),但是ORACLE如何判断让哪个用户操作呢(前提是时间完全相同)。
解决方案 »
- oracle数据库编码问题
- 请教sqlserver导入大量(亿量级)数据到Oracle数据库问题
- Oracle SQL*plus登录界面问题
- imp指定表空间的一个问题?
- 存储过程小问题???
- 问下各位大侠,普通视图和物化视图有什么区别?????????
- 关于ORCAL一个报错的问题(急!各位大侠请进)
- 问一个菜菜的问题。我现在用的盗版的ora9i数据库与正版的到底有哪些差别啊?
- sql里怎么得到一个date类型的值,它等于当月的第一天
- 关于vb+oracle开发的问题,为什么我一运行我的应用程序,系统就写一个set.log文件,吧我的机器搞得很慢!为什么阿。事什么原因
- 触发器 能否更新某个字段
- 关于ORA-00903.表名无效的错误。
如果先执行update的用户不执行commit就不会释放锁
另外的用户也就无法进行update操作。
可是如果两用户同时进行update操作ORACLE如何处理呢。
select * from tb for update, 之后就出现网络故障,与数据库段开连接,就是重新连接后,会以一个新的session, 就的session还是会锁住表, 这时,用户A对表的锁就不会释放,其他用户也不能对表进行更新,包过用户A自己。 这时就需要手动的来kill session,来释放表的锁。
您好
请问这位兄弟的意思是不是这样Data
X Y
4 5 step1 连接1 SQL1: UPDATE t SET x = 2 WHERE y = 5;
step2 连接2 SQL2: UPDATE t SET y=y+1;
step3 连接1 SQL1: commit
step4 连接2 SQL2: commit您的意思就是说 执行了step1和step2时 完成的获取是一致读
而step3 和 step4时所完成的是当前读吗?但如果step1和step2的提交时间相同 那ORACLE又会如何处理呢?