SQL ºÍOracle¶ÔÊý¾Ý¿âÊÂÎñ´¦ÀíµÄ²îÒìÐÔ
¼ò½é
¡¡¡¡±¾ÎĽ²ÊöMS SQL ServerºÍOracle¶ÔÊý¾Ý¿âÊÂÎñ´¦ÀíµÄ²îÒìÐÔ£¬ÒÔ¼°OracleÈçºÎ¶ÔÊÂÎñ´¦ÀíµÄʵÏÖ¡£
¡¡¡¡Ê²Ã´ÊÇÊÂÎñ
¡¡¡¡Êý¾Ý¿âÊÂÎñ(Database Transaction)ÊÇÒ»×éÊý¾Ý¿â²Ù×÷µÄ´¦Àíµ¥Ôª¡£ÊÂÎñ·ûºÏACIDµÄÌØÐÔ£º
¡¡¡¡Atomic:Ô×ÓÐÔ£¬ÒªÃ´È«²¿ÒªÃ´Ò»ÎÞËùÓС£All or None.
¡¡¡¡Consistent:Ò»ÖÂÐÔ£¬ËùÓÐÒÀÀµ¹ØϵÒÔ¼°Ô¼ÊøÒ»Ö¡£
¡¡¡¡Isolated:·ÖÀëÐÔ£¬²»Í¬ÊÂÎñ²»»¥ÏàÓ°Ïì¡£
¡¡¡¡Durable:³Ö¾ÃÐÔ£¬Ìá½»ÊÂÎñµÄÊý¾ÝÐèÒª³Ö¾Ã»¯¡£
¡¡¡¡ÎªÊ²Ã´ÒªÊ¹ÓÃÊÂÎñ
¡¡¡¡ÊµÏÖÊÂÎñÖ÷ÒªÓÐÁ½´ó¹¦ÄÜ£º
¡¡¡¡1.±£Ö¤Êý¾Ý¿âµÄconsistent(Ò»ÖÂÐÔ״̬)£¬±£³ÖËùÓÐÒÀÀµ¹ØϵÒÔ¼°Ô¼ÊøÒ»ÖÂ)¡£ÄÄÅÂÊý¾Ý¿â¹ÜÀíϵͳ³öÏÖ¹ÊÕÏʱ(ÀýÈç¶Ïµç)£¬Ò²Äָܻ´µ½Ò»ÖÂÐÔ״̬¡£ÀýÈçÒ»¸öÒøÐÐתÕÊϵͳ£¬ÕÅÈý¸øÀîËÄת3000Ô²RMB£¬ÕÅÈýÕʺÅÉϼõ3000ºÍÀîËÄÕʺÅÉϼÓ3000ÐèҪͬʱÍê³É£¬·ñÔòϵͳµÄÕʾͲ»Æ½ÁË¡£Ò²ÀýÈçÓÐЩÏúÊÛϵͳµÄ»ã×ܱíºÍÃ÷ϸ±í£¬ÊÇÒ»¸öÖ÷±íºÍÒ»¸ö´Ó±í£¬ÐèҪͬ²½¸üС£
¡¡¡¡2.²¢·¢Ê±·ÖÀ벻ͬÊÂÎñ²Ù×÷¡£ÀýÈç±à¼¹ý³ÌÖеÄÊý¾Ý²»¸øÆäËûÊÂÎñ²éѯµ½¡£ÕâÒ²ÊÇÏà¶ÔµÄ£¬ÔÚÌØЧÐèÇóÏ¿ÉÄÜÒªÖ§³Ödirty read(Ôà¶Á)£¬µ«²»ÊÇÕâÀïÌÖÂ۵ķ¶Î§ÁË¡£
¡¡¡¡SQL Server 2008 µÄÊÂÎñÀàÐÍ
¡¡¡¡1.×Ô¶¯Ìá½»ÊÂÎñ Autocommit Transactions
¡¡¡¡ÕâÊÇSQL ServerĬÈϵÄÊÂÎñÀàÐÍ£¬Ã¿Ò»Ìõµ¥¶ÀµÄSQLÓï¾ä(SQL statement)¶¼Êǵ¥¶ÀµÄÒ»¸öÊÂÎñ£¬Óï¾äÖ´ÐÐÍê±Ïºó×Ô¶¯Ìá½»¡£µ÷Ó÷½²»ÐèÒªÊÖ¹¤¿ØÖÆÊÂÎñÁ÷³Ì¡£
¡¡¡¡2.ÏÔʾÊÂÎñ Explicit Transactions
¡¡¡¡µ÷Ó÷½ÐèÒªµ÷ÓÃAPI»òÕßʹÓÃT-SQLµÄBEGIN TRANSACTION Óï¾äÀ´´ò¿ªÊÂÎñ¡£ÐèÒªµ÷ÓÃCOMMIT »òÕß ROLLBACK TRANSACTION À´Ìá½»»òÕ߻عö¡£
¡¡¡¡3.ÒþʽÊÂÎñ Implicit Transactions
¡¡¡¡Ê¹ÓÃSET IMPLICIT_TRANSACTIONS ON°ÑÊÂÎñģʽ±ä³ÉÒþʽģʽ¡£µ÷Ó÷½²»ÐèÒªÖ´ÐÐBEGIN TRANSACTION Óï¾äÀ´´ò¿ªÊÂÎñ¡£Êý¾Ý¿âÒýÇæÖ´Ðе½SQLÓï¾äµÄʱºò×Ô¶¯´ò¿ªÊÂÎñ¡£µ÷Ó÷½ÐèÒªµ÷ÓÃCOMMIT »òÕß ROLLBACK TRANSACTION À´Ìá½»»òÕ߻عö¡£µ±Êý¾Ý¿âÒýÇæÖ´ÐÐÏÂÒ»¸öSQLÓï¾äʱÓÖ×Ô¶¯´ò¿ªÒ»¸öÐÂÊÂÎñ¡£
OracleµÄÊÂÎñÀàÐÍ
¡¡¡¡OracleµÄÊÂÎñ´¦ÀíÀàÐÍÓеãÏñSQL ServerµÄÒþʽÊÂÎñ¡£µ±Ö´Ðе½µÚÒ»¸ö¿ÉÖ´ÐеÄSQLÓï¾äʱ×Ô¶¯´ò¿ªÊÂÎñ£¬È»ºóÐèÒªµ÷Ó÷½Ö´ÐÐcommit»òÕßrollbackÀ´Ìá½»»òÕ߻عöÊÂÎñ£¬Èç¹ûÓÐDDLÓï¾ä£¬OracleÒ²»á×Ô¶¯Ìá½»ÊÂÎñµÄ¡£
¡¡¡¡²Î¿¼:Transaction Management
¡¡¡¡OracleµÄÊÂÎñµÄʵÏÖ
¡¡¡¡OracleµÄ½á¹¹·ÖÂß¼ÉϺÍÎïÀíÉϵÄÇø±ð¡£Âß¼ÉϵĽṹÊDZí¿Õ¼ä£¬¶øÎïÀíÉϵĽṹÊÇ
Ïà¹ØÎĵµ£º
SQLServerºÍOracleµÄ³£Óú¯Êý¶Ô±È
¡¡¡¡1.¾ø¶ÔÖµ
¡¡¡¡S:select abs(-1) value
¡¡¡¡O:select abs(-1) value from dual
¡¡¡¡2.È¡Õû(´ó)
¡¡¡¡S:select ceiling(-1.001) value
¡¡¡¡O:select ceil(-1.001) value from dual
¡¡¡¡3.È¡Õû£¨Ð¡£©
¡¡¡¡S:select floor(-1.001) value
¡¡¡¡O:select floor(-1.001) valu ......
ÓÉÓÚÒÔÇ°¶¼ÊÇÔÚsqlserver 2005´¦Àí£¬ÏÖÔÚ¿Í»§ÒªÇóoracleÊý¾Ý¿â·þÎñÆ÷£¬
×î³õµÄ´úÂëΪ£º
allRecordSize = (Integer) rs1.getObject(1); //Integer allRecordSize=0;
µ±Ö´ÐеÄʱºò±¨£ºBigDecimalÎÞ·¨×ª»¯ÎªIntegerÀàÐÍ
ΪÁ˼æÈÝÁ½ÕßÐ޸ĺóµÄ´úÂëΪ£º
Object o = rs1.getObject(1);
&nbs ......
1.Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò(Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯Æ÷ÖÐÓÐЧ)¡¡¡¡
¡¡¡¡ SQLSERVERµÄ½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬Òò´Ëfrom×Ó¾äÖÐдÔÚ×îºóµÄ±í£¨»ù´¡±ídriving table£©½«±»×îÏÈ´¦Àí£¬ÔÚfrom×Ó¾äÖаüº¬¶à¸ö±íµÄÇé¿öÏ£¬±ØÐëÑ¡Ôñ¼Ç¼ÌõÊý×îÉٵıí×÷Ϊ»ù´¡±í£¬µ±SQLSERVER´¦Àí¶à¸ö±íʱ£¬»áÔËÓÃÅÅÐò¼°ºÏ²¢µÄ·½Ê½Á ......