oracleÖеÄsavepointsÊÇʲô
ʲôÊÇsavepoint?
Use the SAVEPOINT statement to identify a point in a transaction to which you can later roll back.
¸øÄã¸öÀý×Ó
SQL> create table test (id number(7));
±íÒÑ´´½¨¡£
SQL> insert into test values (3);
ÒÑ´´½¨ 1 ÐС£
SQL> savepoint a;
±£´æµãÒÑ´´½¨¡£
SQL> insert into test values (4);
ÒÑ´´½¨ 1 ÐС£
SQL> select * from test;
ID
----------
3
4
SQL> rollback to a;
»ØÍËÒÑÍê³É¡£
SQL> select * from test;
ID
----------
3
SQL> rollback;
»ØÍËÒÑÍê³É¡£
SQL> select * from test;
δѡ¶¨ÐÐ
ÊÂÎñÖеÄSavepoints
Äã¿ÉÒÔÔÚÊÂÎñÉÏÏÂÎÄÖÐÉùÃ÷³ÆÎªsavepointµÄÖмä±ê¼Ç¡£Savepoint½«Ò»¸ö³¤ÊÂÎñ·Ö¸ôΪ½ÏСµÄ²¿·Ö¡£
ʹÓÃsavepoint£¬Äã¿ÉÒÔÔÚ³¤ÊÂÎñÖÐÈκεãÈÎÒâ±ê¼ÇÄãµÄ²Ù×÷¡£È»ºóÄã¿ÉÒÔÑ¡Ôñ»Ø¹öÔÚÊÂÎñÖе±Ç°µã֮ǰ¡¢ÉùÃ÷µÄsavepointÖ®ºóÖ´ÐеIJÙ×÷¡£±ÈÈ磬Äã¿ÉÒÔÔÚÒ»³¤¶Î¸´ÔӵĸüÐÂÖÐʹÓÃsavepoint£¬Èç¹û·¸Á˸ö´í£¬Äã²»ÐèÒªÖØÐÂÌá½»ËùÓÐÓï¾ä¡£
SavepointsÔÚÓ¦ÓóÌÐòÖÐͬÑùÓÐÓá£Èç¹ûÒ»¸ö¹ý³Ì°üº¬¼¸¸öº¯Êý£¬ÄÇ¿ÉÒÔÔÚÿ¸öº¯Êýǰ´´½¨Ò»¸ösavepoint¡£Èç¹ûÒ»¸öº¯Êýʧ°Ü£¬·µ»ØÊý¾Ýµ½º¯Êý¿ªÊ¼Ç°µÄ״̬²¢ÔÚÐ޸IJÎÊý»òÖ´ÐÐÒ»¸ö»Ö¸´²Ù×÷ºóÖØÐÂÔËÐк¯Êý¾Í·Ç³£ÈÝÒס£
Ôڻعöµ½Ò»¸ösavepointºó£¬OracleÊÍ·ÅÓɱ»»Ø¹öµÄÓï¾ä³ÖÓеÄËø¡£ÆäËûµÈ´ý֮ǰ±»Ëø×ÊÔ´µÄÊÂÎñ¿ÉÒÔ½øÐÐÁË¡£ÆäËûÒª¸üÐÂ֮ǰ±»ËøÐеÄÊÂÎñÒ²¿ÉÒÔÖ´ÐС£
µ±Ò»¸öÊÂÎñ»Ø¹öµ½Ò»¸ösavepoint£¬·¢ÉúÏÂÁÐʼþ£º
1. Oracle½ö»Ø¹ösavepointÖ®ºóµÄÓï¾ä¡£
2. Oracle±£ÁôÕâÒ»savepoint£¬µ«ËùÓн¨Á¢Óڴ˺óµÄsavepoints¶ªÊ§¡£
3. OracleÊÍ·ÅÔÚ¸Ãsavepointºó»ñµÃµÄËùÓÐ±í¡¢ÐÐËø£¬µ«±£Áô֮ǰ»ñµÃµÄËùÓÐËø¡£
ÊÂÎñ±£³Ö»î¶¯²¢¿É¼ÌÐø¡£
ÎÞÂÛºÎʱһ¸ö»á»°ÔڵȴýÊÂÎñ£¬µ½savepointµÄ»Ø¹ö²»»áÊÍ·ÅÐÐËø¡£ÎªÁËÈ·±£ÊÂÎñÈç¹ûÎÞ·¨»ñµÃËøÒ²²»»áÐü¹Ò£¨hang£©£¬ÔÚÖ´ÐÐUPDATE»òDELETEǰʹÓÃFOR UPDATE ... NOWAIT¡££¨ÕâÀïÖ¸»Ø¹öµÄsavepoint֮ǰ»ñµÃµÄËø¡£¸Ãsavepointºó»ñµÃµÄÐÐËø»á±»ÊÍ·Å£¬Ö®ºóÖ´ÐеÄÓï¾äÒ²»á±»³¹µ×»Ø¹ö¡££©
Ïà¹ØÎĵµ£º
Òª´´½¨Á½¸öÎļþ
1: runBatch.bat
2: sql.txt
runBatch.bat ÄÚÈÝÈçÏ£º
sqlplus username/password @sql.txt
pause
sql.txtÄÚÈÝÈçÏ£º
spool sql.log
create table t1(cname char(20));
insert into t1(cname) values('test');
select * from t1;
spool off
exit
Ë«»÷runBatch.bat¾Í¿ÉÒÔÅúÁ¿Ö´ÐÐsql.txtÖÐ ......
²é¿´oracle·þÎñÆ÷×Ö·û¼¯:select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET'
ʹÓÃPl/SQL ²éѯÊý¾ÝʱÂÒÂë,²åÈëÊý¾ÝʱÂÒÂë
Êý¾Ý¿â·þÎñÆ÷µÄ×Ö·û¼¯ºÍ¿Í»§¶ËµÄ×Ö·û¼¯²»Í¬ËùÔì³ÉµÄ,ÐÞ¸ÄÊý¾Ý¿â¿Í»§¶ËµÄ×Ö·û¼¯ºÍ·þÎñÆ÷µÄ×Ö·û¼¯Ò»ÖÂ
²Ù×÷·½·¨:
oracle 9i :Ð޸ı¾µØ×¢²á±íÖÐORACLE¿Í»§¶Ëµ ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
¹«ÍøÖÕÓÚͨµÄ£¬ÎÒµÄubuntu
Ò²ÖÕÓÚ¿ÉÒÔ¼ÌÐøÊ¹ÓÃÁË¡£¡£¡£
Ê×ÏȰѱ¾×ÓµÄubuntu
´Ó9.04
Éý¼¶µ½10.04
£¬·¢ÏÖϵͳ±ä³ÉÓ¢ºº»ìÓÃÁË£¬ÖØÑ¡ÓïÑÔÖ§³Ö°üÒ²²»¿ÉÒÔ£¬ÊäÈë·¨Ò²Ìí¼Ó²»ÉÏ£¬µ¹ÊÇûÓÐÍøÉÏÓÐÈËÌáµ½µÄϵͳÏìÓ¦·Ç³£»ºÂýµÄÎ ......
----±¾Óû§ËùÓµÓеÄϵͳȨÏÞ:
select * from user_sys_privs;
---±¾Óû§¶ÁÈ¡ÆäËûÓû§¶ÔÏóµÄȨÏÞ:
¡¡select * from user_tab_privs;
-----Ìí¼ÓȨÏÞ
GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE&nbs ......