Oracle For Update ÐÐËø
ת£ºhttp://hi.baidu.com/mcj0127/blog/item/111a900777db06c87b89473c.html
SELECT FOR UPDATE Ïà¹ØµÄ֪ʶ
Ò»¸öÓʼþ·¢Ë͵ÄÓ¦Óûáÿ¹ýÒ»¶¨µÄʱ¼äƬȥÊý¾Ý¿âÖÐȡδ·¢µÄÓʼþÈ»ºó·¢ËÍÓʼþ£¬³É¹¦ºó½«Êý¾Ý¿âÖÐÓʼþ±êʶδ·¢¸ÄΪÒÑ·¢¡£
Õâ¸öÓ¦Óò¿ÊðÔÚwebsphereÉÏ£¬websphere²ÉÓÃÊÇ´¹Ö±¿Ë¡£¬ÓÐ4¸öserver,µ±4¸öserver¶¼¿ªÆôµÄʱºò£¬¾Í³öÏÖͬʱ·¢4·âÏàͬµÄÓʼþ¸øÍ¬Ò»¸öÓû§¡£
Õâʱ£¬for updateËø¾Í¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ!
1:״̬½âÊÍ
statement: Ò»¸öSQLÓï¾ä¡£
session: Ò»¸öÓÉORACLEÓû§²úÉúµÄÁ¬½Ó£¬Ò»¸öÓû§¿ÉÒÔ²úÉú¶à¸öSESSION £¬µ«Ï໥֮¼äÊǶÀÁ¢µÄ¡£
transaction:ËùÓеĸı䶼¿ÉÒÔ»®·Öµ½transactionÀһ¸ötransaction°üº¬Ò»¸ö»ò¶à¸öSQL¡£µ±Ò»¸öSESSION½¨Á¢µÄʱºò¾ÍÊÇÒ»¸öTRANSACTION¿ªÊ¼µÄʱ¿Ì£¬´Ëºó transactionµÄ¿ªÊ¼ºÍ½áÊøÓÉDCL¿ØÖÆ£¬Ò²¾ÍÊÇÿ¸öCOMMIT/ROLLBACK¶¼±êʾ×ÅÒ»¸ötransactionµÄ½áÊø¡£
consistency£ºÊǶÔÓÚstatement¼¶±ð¶ø²»ÊÇtransaction¼¶±ðÀ´ËµµÄ¡£sql statement µÃµ½µÄÊý¾Ý¶¼ÊÇÒÔsql statement¿ªÊ¼µÄIMAGE¡£
2:sql½âÊÍ
LOCKµÄ»ù±¾Çé¿ö: update, insert ,delete, select ... for update»áLOCKÏàÓ¦µÄROW ¡£
Ö»ÓÐÒ»¸öTRANSACTION¿ÉÒÔLOCKÏàÓ¦µÄÐУ¬Ò²¾ÍÊÇ˵Èç¹ûÒ»¸öROWÒѾLOCKEDÁË£¬ÄǾͲ»Äܱ»ÆäËûTRANSACTIONËùLOCKÁË¡£
LOCKÓÉstatement²úÉúµ«È´ÓÉTRANSACTION(commit£¬rollback)½á⣬Ҳ¾ÍÊÇ˵һ¸öSQLÍê³ÉºóLOCK»¹»á´æÔÚ£¬Ö»ÓÐÔÚCOMMIT/ROLLBACKºóLOCK²Å»áRELEASE¡£
SELECT.... FOR UPDATE [OF cols] [NOWAIT];
OF cols: SELECT cols from tables [WHERE...] FOR UPDATE [OF cols] [NOWAIT];
3£ºsql˵Ã÷
a:¹ØÓÚOF
transaction AÔËÐÐ
select a.object_name,a.object_id from wwm2 a,wwm3 b where b.status='VALID' and a.object_id=b.object_id for update of a.status
Ôòtransaction B¿ÉÒÔ¶Ôb±íwwm3µÄÏàÓ¦ÐнøÐÐDML²Ù×÷,µ«²»ÄܶÔa±íwwm2ÏàÓ¦ÐнøÐÐDML²Ù×÷.
·´Ò»Ï¿´¿´
transaction AÔËÐÐ
select a.object_name,a.object_id from wwm2 a,wwm3 b where b.status='VALID' and a.object_id=b.object_id for update of b.status
Ôòtransaction B¿ÉÒÔ¶Ôa±íwwm2µÄÏàÓ¦ÐнøÐÐDML²Ù×÷,µ«²»ÄܶÔb±íwwm3ÏàÓ¦ÐнøÐÐDML²Ù×÷.
Ò²¾ÍÊÇ˵LOCKµÄÊÇÐÐ,Ö»ÊÇÈç¹û²»¼ÓOFµÄ»°»á¶ÔËùÓÐÉæ¼°µÄ±íLOCKµÄ,¼ÓÁËOFºóÖ»»áLOCK OF ×Ö¾äËùÔÚµÄTABLE.
b:¹ØÓÚNOWAIT(Èç¹ûÒ»¶¨ÒªÓÃFOR UPDATE£¬ÎÒ¸ü½¨Òé¼ÓÉÏNOWAIT)
µ±
Ïà¹ØÎĵµ£º
ʲôÊǺϲ¢¶àÐÐ×Ö·û´®£¨Á¬½Ó×Ö·û´®£©ÄØ£¬ÀýÈ磺
SQL> desc test;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y &nb ......
һЩ»ù±¾µÄOracleÃüÁî
»ù±¾ÃüÁî
Á¬½ÓÊý¾Ý¿â
C:>SQLPLUS /NOLOG
SQL>CONN / AS SYSDBA
1.Oracle ¹Ø±Õ
SQL>SHUTDOWN (ABORT|IMMEDIATE|NORMAL)
2.Oracle Æô¶¯
SQL>STARTUP (REMOUNT|MOUNT|OPENT)
3.SQL> HELP SHOW
SHOW
----
Shows the value of a SQL*Plus system variable, or the
......
д´æ´¢¹ý³Ìʱ£¬Óõ½²ð·Ö×Ö·û´®£¬µÚÒ»¸ö´«Èë²ÎÊýΪ´ø·Ö¸î·ûµÄ×Ö·û´®£¬µÚ¶þ¸öΪ·Ö¸ô·ûµÄ¸öÊý£¬ÏÂÃæÊǵ¥Ìá³öÀ´µÄ·Ö¸î×Ö·û´®·½·¨£¬
create or replace procedure split( ......
1. È¡A±íµÄÊý¾Ý£¬¸üÐÂB±í×Ö¶Î
update m_build b
set b.district_id=(
select d.district_id
from
bjhouse.d_district d
where
b.build_name_jq=d.district_name)
where exists
(select 1
from ......
ÎÒÃÇ´ó¼Ò¶¼ÖªµÀÿ¸öOracleÊý¾Ý¿â¶¼»áÓÐÒ»¸ö»òÊǶà¸öÎïÀíµÄOracleÊý¾ÝÎļþ,Êý¾Ý¿âÐÅÏ¢(½á¹¹,Êý¾Ý)µÄÖ÷Òª×÷ÓÃÊÇÀ´±£´æÔÚÕâЩÏà¹ØµÄÊý¾ÝÎļþ,¶øÇÒÖ»ÓÐÕâЩÏà¹ØµÄÎļþOracle²ÅÄܹ»½âÊÍÓë¹ÜÀíÕâЩ´æ´¢.OracleÊý¾ÝÎļþ¾ßÓÐÒÔÏÂÒ»Ð©ÌØÐÔ:
1.Ò»¸öÊý¾ÝÎļþ½ö½ö¹ØÁªÒ»¸öÊý¾Ý¿â,OracleÊý¾ÝÎļþÓëÊý¾Ý¿âÖ®¼ä¶ÔÓ¦¹ØÏµÊÇÒ»¶ÔÒ»¹ØÏµ,µ±È»· ......