ʵÀý¶Ô±ÈOracleÖÐtruncateºÍdeleteµÄÇø±ð
ʵÀý¶Ô±ÈOracleÖÐtruncateºÍdeleteµÄÇø±ð
ɾ³ý±íÖеÄÊý¾ÝµÄ·½·¨ÓÐdelete,truncate,
ËüÃǶ¼ÊÇɾ³ý±íÖеÄÊý¾Ý,¶ø²»ÄÜɾ³ý±í½á¹¹,delete ¿ÉÒÔɾ³ýÕû¸ö±íµÄÊý¾ÝÒ²¿ÉÒÔɾ³ý±íÖÐijһÌõ»òNÌõÂú×ãÌõ¼þµÄÊý¾Ý,¶øtruncateÖ»ÄÜɾ³ýÕû¸ö±íµÄÊý¾Ý,Ò»°ãÎÒÃǰÑdelete ²Ù×÷ÊÕ×÷ɾ³ý±í,¶øtruncate²Ù×÷½Ð×÷½Ø¶Ï±í.
truncate²Ù×÷Óëdelete²Ù×÷¶Ô±È
²Ù×÷
»Ø¹ö
¸ßË®Ïß
¿Õ¼ä
ЧÂÊ
Truncate
²»ÄÜ
Ͻµ
»ØÊÕ
¿ì
delete
¿ÉÒÔ
²»±ä
²»»ØÊÕ
Âý
ÏÂÃæ·Ö±ðÓÃʵÀý²é¿´ËüÃǵIJ»Í¬
1.»Ø¹ö
Ê×ÏÈÒªÃ÷°×Á½µã
1.ÔÚoracle ÖÐÊý¾Ýɾ³ýºó»¹ÄܻعöÊÇÒòΪËü°ÑÔʼÊý¾Ý·Åµ½ÁËundo±í¿Õ¼ä,
2.DMLÓï¾äʹÓÃundo±í¿Õ¼ä,DDLÓï¾ä²»Ê¹ÓÃundo,¶ødeleteÊÇDMLÓï¾ä,truncateÊÇDDLÓï¾ä,±ðÍâDDLÓï¾äÊÇÒþʽÌá½».
ËùÒÔtruncate²ÙÓò»Äܻعö,¶ødelete²Ù×÷¿ÉÒÔ.
Á½ÖÖ²Ù×÷¶Ô±È(Ê×ÏÈн¨Ò»¸ö±í,²¢²åÈëÊý¾Ý)
SQL> create table t
2 (
3 i number
4 );
Table created.
SQL> insert into t values(10);
SQL> commit;
Commit complete.
SQL> select * from t;
I
----------
10
Deleteɾ³ý,È»ºó»Ø¹ö
SQL> delete from t;
1 row deleted.
SQL> select * from t;
no rows selected
#ɾ³ýºó»Ø¹ö
SQL> rollback;
Rollback complete.
SQL> select * from t;
I
----------
10
Truncate½Ø¶Ï±í,È»ºó»Ø¹ö.
SQL> truncate table t;
Table truncated.
SQL> rollback;
Rollback complete.
SQL> select * from t;
no rows selected
¿É¼ûdeleteɾ³ý±í»¹¿ÉÒԻعö,¶øtruncate½Ø¶Ï±í¾Í²»ÄܻعöÁË.(ǰÌáÊÇdelete²Ù×÷ûÓÐÌá½»)
2.¸ßË®Ïß
ËùÓеÄOracle±í¶¼ÓÐÒ»¸öÈÝÄÉÊý¾ÝµÄÉÏÏÞ£¨ºÜÏóÒ»¸öË®¿âÀúÊ·×î¸ßµÄˮ룩£¬ÎÒÃǰÑÕâ¸öÉÏÏÞ³ÆÎª“high water mark”»òHWM¡£Õâ¸öHWMÊÇÒ»¸ö±ê¼Ç(רÃÅÓÐÒ»¸öÊý¾Ý¿éÓÃÀ´¼Ç¼¸ßË®±ê¼ÇµÈ)£¬ÓÃÀ´ËµÃ÷ÒѾÓжàÉÙÊý¾Ý¿é·ÖÅ䏸Õâ¸ö±í. HWMͨ³£Ôö³¤µÄ·ù¶ÈΪһ´Î5¸öÊý¾Ý¿é.
deleteÓï¾ä²»Ó°Ïì±íËùÕ¼ÓõÄÊý¾Ý¿é, ¸ßË®Ïß(high watermark)±£³ÖÔλÖò»¶¯
truncate Óï¾äȱʡÇé¿öÏ¿ռäÊÍ·Å,³ý·ÇʹÓÃreuse storage; truncate»á½«¸ß
Ïà¹ØÎĵµ£º
1£¬segments µÄ·ÖÀà
l
Êý¾Ý¶Î
l
Ë÷Òý¶Î
l
ÁÙʱ¶Î
l
»ØÍË ......
ÀûÓÃoracleÉ󼯹¦ÄÜÀ´¼à²âÊÔ»·¾³µÄ±ä»¯
×ö¹ý²âÊÔµÄÈ˶¼Ó¦¸Ã»áÅöµ½ÕâÑùµÄÇé¿ö£º²âÊÔ·¢ÏÖµÄbugÔÚ¿ª·¢»úÆ÷ÉÏûÓгöÏÖ£¬ÏÔÈ»ÕâÊÇ»·¾³²îÒìµÄÔÒò¡£Ï൱¶àÇé¿öÏ£¬ÒòΪ²âÊÔʹÓõÄÊý¾Ý¿â½á¹¹ºÍ¿ª·¢Ê¹ÓõÄÊý¾Ý¿â½á¹¹²»Ò»ÖÂÔì³ÉµÄ¡£ÓÈÆäÊÇһЩ¹«Ë¾ÔÚÌá½»²âÊÔ°æ±¾µÄʱºò£¬×¢ÖØÓ¦Óà ......
OracleÉ󼯹¦ÄÜ
Ò»¡¢ É󼯷ÖÀࣺ
OracleÖÐÉó¼Æ×ÜÌåÉϿɷÖΪ“±ê×¼É󼯔ºÍ“ϸÁ£¶ÈÉ󼯔ºóÕßÒ²³ÆÎª“»ùÓÚÕþ²ßµÄÉ󼯔£¬ÔÚOracle10GÖ®ºó¹¦Äܵõ½ºÜ´óÔöÇ¿¡£ÆäÖбê×¼Éó¼Æ¿É·ÖΪÓû§¼¶Éó¼ÆºÍϵͳ¼¶É󼯡£Óû§¼¶Éó¼ÆÊÇÈκÎOracleÓû§¿ÉÉèÖõÄÉ󼯣¬Ö÷ÒªÊÇÓû§Õë¶Ô×Ô¼º´´½¨ ......
in ÊǰÑÍâ±íºÍÄÚ±í×÷hash Á¬½Ó£¬¶øexistsÊǶÔÍâ±í×÷loopÑ»·£¬Ã¿´ÎloopÑ»·ÔÙ¶ÔÄÚ±í½øÐвéѯ¡£
Ò»Ö±ÒÔÀ´ÈÏΪexists±ÈinЧÂʸߵÄ˵·¨ÊDz»×¼È·µÄ¡£
Èç¹û²éѯµÄÁ½¸ö±í´óСÏ൱£¬ÄÇôÓÃinºÍexists²î±ð²»´ó¡£
in ÊǰÑÍâ±íºÍÄÚ±í×÷hash Á¬½Ó£¬¶øexistsÊǶÔÍâ±í×÷loopÑ»·£¬Ã¿´ÎloopÑ»·ÔÙ¶ÔÄÚ±í½øÐвéѯ¡£
Ò»Ö ......
1. trigger ÊÇ×Ô¶¯Ìá½»µÄ£¬²»ÓÃCOMMIT£¬ROLLBACK
2. trigger×î´óΪ32K£¬Èç¹ûÓи´ÔÓµÄÓ¦ÓÿÉÒÔͨ¹ýÔÚTRIGGERÀïµ÷ÓÃPROCEDURE»òFUNCTIONÀ´ÊµÏÖ¡£
3. Óï·¨
CREATE OR REPLACE TRIGGER <trigger_name>
<BEFORE | AFTER> <ACTION>
ON <table_name>
DECLARE
<variable definitions> ......