数据库oracle for update of 和for update的区别
select * from TTable1 for update 锁定表的所有行,只能读不能写
2 select * from TTable1 where pkid = 1 for update 只锁定pkid=1的行
3 select * from Table1 a join Table2 b on a.pkid=b.pkid for update 锁定两个表的所有记录
4 select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update 锁定两个表的中满足条件的行
5. select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update of a.pkid 只锁定Table1中满足条件的行
for update 是把所有的表都锁点 for update of 根据of 后表的条件锁定相对应的表
-----------
关于NOWAIT(如果一定要用FOR UPDATE,我更建议加上NOWAIT)
当有LOCK冲突时会提示错误并结束STATEMENT而不是在那里等待(比如:要查的行已经被其它事务锁了,当前的锁事务与之冲突,加上nowait,当前的事务会结束会提示错误并立即结束 STATEMENT而不再等待).
如果加了for update后 该语句用来锁定特定的行(如果有where子句,就是满足where条件的那些行)。当这些行被锁定后,其他会话可以选择这些行,但不能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止。
因为FOR UPDATE子句获得了锁,所以COMMIT将释放这些锁。当锁释放了,该游标就无效了。
就是这些区别了
相关文档:
oracle启动问题
一:数据库没有启动
#sqlplus /nolog
sql>connect /as sysdba
sql>startup
二:监听出问题
登录DB服务器
使用lsnrctl start/stop开启/关闭监听
使用lsnrctl status查看状态
理应为:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ERPAP)(PORT=1521)))
STATUS of the ......
我们可以通过START WITH . . . CONNECT BY . . .子句来实现SQL的 层次查询,而Oracle 10g 为其添加许多了新的伪列。十多年以来,Oracle SQL 具有依照层次关系进行查询的功能。例如,你可以指定一个起始条件,然后根据一个或多个连接条件来确定孩子行的内容。举例来说,现在假设我有一个表,里面记 ......
Oracle外部身份认证研究
密码文件认证 操作系统认证 remote_login_passwordfile SQLNET.AUTHENTICATION_SERVICES &nb ......
大致分为三部份,1.SQL,2.ERP本身,3.本机
1.如果是SQL导出时出现,乱码可以通过修改NLS_LANG,来避免乱码,
繁体修改成:TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5
简体修改成: SIMPLIFIED CHINESE_CHINA.ZHS16GBK
英文就不用说了!!
2.如果是ERP export 时出现乱码,可以通过设置profile来设置FND: NATIVE CLIENT ENC ......
Oracle 数据类型及存储方式
袁光东 原创
概述
通过实例,全面而深入的分析oralce的基本数据类型及它们的存储方式。以ORACLE 10G为基础,介绍oralce
10g引入的新的数据类型。让你对or ......