MS-SQL > Transaction & Lock - Æ®·£Àè¼Ç ó¸® µî·ÏÀÏ : 2017-07-03 19:40 Á¶È¸¼ö : 52,630¾È³Ä¼¼¿©. ¿À´ÃÀº ½ÇÁ¦ ¿¹¹®À» º¸¸é¼ ÇϳªÇϳª °°ÀÌ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.
9.2.1. @@trancount ¸ÕÀú ´Ù¸¥ 󸮿¡ ¾Õ¼¼ @@trancount ¶ó´Â ±Û·Î¹ú º¯¼ö¿¡ ´ëÇؼ ¾Ë¾Æ¾ß ÇÒ°Í °°³×¿©.. ^^ À̺¯¼ö´Â ¹ú½á ÀúÀåÇÁ·Î½ÃÁ®ÀÇ ±âº»¹®¹ý(º¯¼ö¼±¾ð) ¿¡¼ º¸±¸ ³Ñ¾î ¿Ô´ø ³»¿ëÀ̳׿ä. @@trancount Æ®·£Àè¼ÇÀÇ ÁßøµÈ »óŸ¦ °¡Áö°í ÀÖ´Â º¯¼öÀÔ´Ï´Ù. Æ®·£Àè¼Ç ¹Û¿¡ ÀÖÀ¸¸é 0, Æ®·£Á§¼ÇÀÌ ÁøÇàÁßÀ̸é,,, 1 À̶õ °ªÀ» °¡Áö°í ÀÖ´ä´Ï´Ù. 9.2.2. Æ®·£Àè¼ÇÀÇ ½ÃÀÛ°ú ³¡. ±×·³ ¿¹Á¦¸¦ Çϳª ÇØ º¸Á®.?? À§ÀÇ ¿¹Á¦¸¦ º¸¸é¼ Çϳª Çϳª º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ÀÏ´Ü À§¿¡¼ º¸¸é create table tran1(id int,trancnt int) tran1 Å×À̺íÀ» ¸¸µé¾ú½À´Ï´Ù. SELECT @@TRANCOUNT ¸í·ÉÀ» ÅëÇؼ @@TRANCOUNT °ªÀ» »Ì¾Æº¾´Ï´Ù... °ªÀº 0ÀÌ Ãâ·ÂµË´Ï´Ù. Á÷Á¢Çغ¸¼¼¿ä. È®½ÇÇÑ°¡¿©??? ±×·±ÈÄ INSERT TRAN1 VALUES(1,@@TRANCOUNT) ¸¦ ÅëÇØ °ªÀ» ÀÔ·ÂÇß½À´Ï´Ù. Å×ÀÌºí¿¡ °ªÀº ¸ð°¡ µé¾î °¥±î¿©? '0'°ªÀÌ µé¾î°¥±î¿©???? ¾Æ´Õ´Ï´Ù. '1'°ªÀÌ µé¾î°©´Ï´Ù. SELECT * FROM TRAN1¸¦ ÅëÇØ 봑ÀÎÇØ º¸½Ã¸é ¾Ë°ÚÁö¸¸, È®½ÇÇϽÃÁ®????? ¿©·¯ºÐÀÌ º¸¼ÅµÎ ¾Æ½Ã°ÚÁö¸¸ Äõ¸® °¢°¢ÀÇ ´Ü°è¿¡¼ È®ÀÎÇØ º»°á°ú 0°ªÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ TRAN1 Å×ÀÌºí¿¡ ÀúÀåµÈ 1ÀÇ °ªÀ» º¸¸é ¸ðµç ÇϳªÀÇ Æ®·£Àè¼Ç³»¿¡¼ INSERT µÇ¾úÀ½À» ¾Ë¼öÀÖ½À´Ï´Ù. Áï, SQL ¼¹ö¿¡¼´Â ±âº»ÀûÀ¸·Î µ¥ÀÌÅ͸¦ ¼öÁ¤ÇÏ´Â ¸ðµç Äõ¸®´Â ÀÚü·Î ÇϳªÀÇ Æ®·£Àè¼Ç ´ÜÀ§°¡ µÇ¸ç À§ÀÇ ¿¹Á¦¿Í °°Àº Äõ¸®´Â ³»ºÎÀûÀ¸·Î ¾Æ·¡¿Í °°Àº Çü½ÄÀ¸·Î 󸮵Ǿî Áý´Ï´Ù. À§ÀÇ ¿¹Á¦¸¦ º¸¸é¼ Çϳª Çϳª º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ÀÏ´Ü À§¿¡¼ º¸¸é create table tran1(id int,trancnt int) tran1 Å×À̺íÀ» ¸¸µé¾ú½À´Ï´Ù. SELECT @@TRANCOUNT ¸í·ÉÀ» ÅëÇؼ @@TRANCOUNT °ªÀ» »Ì¾Æº¾´Ï´Ù... °ªÀº 0ÀÌ Ãâ·ÂµË´Ï´Ù. Á÷Á¢Çغ¸¼¼¿ä. È®½ÇÇÑ°¡¿©??? ±×·±ÈÄ INSERT TRAN1 VALUES(1,@@TRANCOUNT) ¸¦ ÅëÇØ °ªÀ» ÀÔ·ÂÇß½À´Ï´Ù. Å×ÀÌºí¿¡ °ªÀº ¸ð°¡ µé¾î °¥±î¿©? '0'°ªÀÌ µé¾î°¥±î¿©???? ¾Æ´Õ´Ï´Ù. '1'°ªÀÌ µé¾î°©´Ï´Ù. SELECT * FROM TRAN1¸¦ ÅëÇØ 봑ÀÎÇØ º¸½Ã¸é ¾Ë°ÚÁö¸¸, È®½ÇÇϽÃÁ®????? ¿©·¯ºÐÀÌ º¸¼ÅµÎ ¾Æ½Ã°ÚÁö¸¸ Äõ¸® °¢°¢ÀÇ ´Ü°è¿¡¼ È®ÀÎÇØ º»°á°ú 0°ªÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ TRAN1 Å×ÀÌºí¿¡ ÀúÀåµÈ 1ÀÇ °ªÀ» º¸¸é ¸ðµç ÇϳªÀÇ Æ®·£Àè¼Ç³»¿¡¼ INSERT µÇ¾úÀ½À» ¾Ë¼öÀÖ½À´Ï´Ù. Áï, SQL ¼¹ö¿¡¼´Â ±âº»ÀûÀ¸·Î µ¥ÀÌÅ͸¦ ¼öÁ¤ÇÏ´Â ¸ðµç Äõ¸®´Â ÀÚü·Î ÇϳªÀÇ Æ®·£Àè¼Ç ´ÜÀ§°¡ µÇ¸ç À§ÀÇ ¿¹Á¦¿Í °°Àº Äõ¸®´Â ³»ºÎÀûÀ¸·Î ¾Æ·¡¿Í °°Àº Çü½ÄÀ¸·Î 󸮵Ǿî Áý´Ï´Ù.
¿Ö ±×¸²ÀÇ ¿¹Á¦¸¦ ½ÇÇàÇßÀ»¶§ °á°ú°¡ '0'ÀÌ ¾Æ´Ñ '1'ÀÌ ³ª¿Ô´ÂÁö ¾Æ½Ã°Ú³ª¿©??? ±×·³, ÀÌÁ¦ »ç¿ëÀÚ°¡ Á÷Á¢ ½ÃÀÛ°ú ³¡À» ÁöÁ¤ÇÏ°í ½Í´Ù¸é ¾îÄÉ ÇØ¾ß ÇÒ±î¿ä. Áï, ¸í½ÃÀûÀÎ Æ®·£Àè¼ÇÀ» ¸»ÇÏ´Â °Ì´Ï´Ù. ÀÌÁ¦ ¸í½ÃÀûÀÎ Æ®·£Àè¼ÇÀ» °£´ÜÈ÷ ¾Ë¾Æº¸µµ·ÏÇÏ°Ú½À´Ï´Ù. 9.2.3. ¸í½ÃÀûÀÎ Æ®·£Àè¼Ç ¾ÕÀÇ ¿¹Á¦¸¦ ÅëÇؼ SQL¼¹ö¿¡¼ µ¥ÀÌÅÍ¿¡ º¯°æÀ» °¡ÇÏ´Â ÀÛ¾÷Àº ¸ðµÎ °¡°¢ ÇϳªÀÇ Æ®·£Àè¼ÇÀ¸·Î 󸮵ÊÀ» È®ÀÎÇÒ¼ö ÀÖ¾ú½À´Ï´Ù. ÇÏÁö¸¸ µ¥ÀÌÅÍÀÇ ÀÏ°ü¼ºÀ» À§Çؼ´Â ¾÷¹« ±ÔÄ¢»ó ¼·Î °ü·ÃÀÖ´Â ÀÛ¾÷Àº ¸ðµÎ ¹¾î¼ ÇϳªÀÇ Æ®·£Àè¼Ç À¸·Î ó¸®ÇØÁà¾ß ÇÕ´Ï´Ù.
ÀÚ, ¶ÇÇϳªÀÇ ¿¹Á¦¸¦ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ¿©·¯ºÐÀÌ °èÁ ÀÌü¸¦ ½Ãŵ´Ï´Ù. Ã־ȱ԰¡ ¾È±Ô¾ØÇÑÅ× ¿ëµ·À» º¸³»ÁÝ´Ï´Ù.
ÀÌÄÉ µÎ°³ÀÇ ÀÛ¾÷À» Çؾ߰ÚÁö¿©?
ÀÌÄÉ µÇ¾ß°ÚÁö¿©??? ÀÌ°Ô ¹Ù·Î ¸í½ÃÀûÀÎ Æ®·£Àè¼Ç À̶ø´Ï´Ù. ÀÌÇØ ÇϽÃÁ®?? ±Ùµ¥¿© À§¿Í °°Àº °æ¿ì ¸¸¾à 1¹ø ÀÛ¾÷À» ÇÒ¶§ ¿¡·¯°¡ ¾ø¾ú¾î¿©. ±Ùµ¥ 2¹øÀÛ¾÷À» ÇÒ¶§ ¿¡·¯°¡ »ý°å´Ù¸é µ¥ÀÌŸ´Â ¾îÄÉ µÉ±î¿©??? Á¦ ÅëÀå¿¡´Â µ·ÀÌ ºüÁ® ³ª°¬Áö¸¸ ¿ì¸®¾Ø ÅëÀå¿¡ ÀÔ±ÝÀÌ µÉ±î¿©??? ¾Æ~~ ÀÌ·Ð... ÀÌ·± °æ¿ì°¡ »ý±â¸é Àü ¿ï¾ØÇÑÅ× ¸Â¾Æ 듁½À´Ï´Ù... -.- Àú¾ß È®ÀÎÇÒ ±æÀÌ ¾ø°ÚÁö¿©??? ºÐ¸íÈ÷ ºüÁ® ³ª°¬À¸´Ï±î,,,, ±×·³ Àü ¾îÄÉ ÇØ¾ß Çϳª¿©? ¿µ¼öÁõ°¡Áö°í ÀºÇà°¡¼ ¹«Àð°Ô µûÁö¸é µÇÁö¿©... ļļļ,,, Àú ¼º°Ý ´õ·´½À´Ï´Ù.....È÷È÷~~~ À§ÀÇ °æ¿ìµµ ¾à°£ÀÇ ¹®Á¦Á¡ÀÌ ÀÖ½À´Ï´Ù. ±×·¸Áö¿©?? ÀÌ·±°æ¿ì¶§¹®¿¡ ¸í½ÃÀûÀÎ Æ®·£Àè¼ÇÀº ¹Ýµå½Ã ÇÊ¿äÇÑ °Ì´Ï´Ù. ±×·³ ¾îÄÉ ÇÏ¸é µÉ±î¿©?
¿ä·¸°Ô ÇÕÄ¡¸é µÈ´ä´Ï´Ù... ÇÏÇÏÇÏ~~~~~ ¾Ë°ÚÁö¿©????? ÀÚ ±×·³ ´õ »ó¼¼ÇÏ°Ô À̹ø¿¡ ·Ñ¹é±îÁö °çµå¸° ³»¿ëÀ» º¼±î¿©???
¾î¶»½À´Ï±î??? @@ERROR º¯¼ö´Â ÀúÀåÇÁ·Î½ÃÁ®¿¡¼ ÀÌ¹Ì º¸°í ³Ñ¾î¿Â ³»¿ëÀ̱⠶§¹®¿¡ ±Ã±ÝÇϽźÐÀº,,, ´Ù½Ã È®ÀÎÇØ º¸½Ã°í ¿À¼¼¿ä. À§ÀÇ ¿¹Á¦´Â óÀ½ UPDATE ÇÏ°í ³ª¼ ¿¡·¯°¡ ÀÖÀ¸¸é ·Ñ¹é󸮸¦ ÇÏ°í, ±×·¸Áö ¾ÊÀ¸¸é ¿ì¸®¾Ø ÅëÀåÀ» ¾÷µ¥ÀÌÆ® ½ÃÄÑÁÖÁö¿ä. À̰͵µ ¶ÇÇÑ ¿¡·¯ ¾ø´Ù¸é ¸ðµÎ COMMIT ÇÏÁö¸¸ ±×·¸Áö ¾ÊÀ»¶§ ROLLBACK ½ÃÅ°¸é µÇ°ÚÁö¿ä? ¾î¶²°¡¿©??? ÀÌÇØ°¡ °¡½ÃÁ®??? ±×¸® ¾î·ÆÁö ¾ÊÀº ³»¿ëµéÀÌ´Ï, ±Ý¹æµé ÇϽǼö ÀÖÀ»°Ì´Ï´Ù. 9.2.4. ³»ºÎÀû Æ®·£Àè¼Ç(IMPLICIT) Áö±Ý±îÁö´Â Æ®·£Àè¼ÇÀ» ó¸®Çϱâ À§Çؼ °³¹ßÀÚ°¡ ¸í½ÃÀûÀ¸·Î BEGIN TRAN ¹®À» »ç¿ëÇؼ Æ®·£Àè¼ÇÀÌ ½ÃÀ۵ǾúÀ½À» ¾Ë¸®´Â ¹æ¹ýÀ» ¼³¸íÇß½À´Ï´Ù. SET IMPLICIT_TRANSACTIONS ¿É¼Ç ¼³Á¤Àº Ä¿³Ø¼Ç ·¹º§ ¼³Á¤À¸·Î ÇØ´ç Ä¿³Ø¼Ç¿¡¼ µ¥ÀÌÅ͸¦ ¼öÁ¤ÇÏ´Â Äõ¸®¸¦ ½ÇÇàÇϸé ÀÚµ¿À¸·Î ÇϳªÀÇ Æ®·£Àè¼ÇÀÌ ½ÃÀÛµÈ ÈÄ °³¹ßÀÚ°¡ ¸í½ÃÀûÀ¸·Î COMMIT ¶Ç´Â ROLLBACK 󸮸¦ ÇØÁà¾ß¸¸ Æ®·£Àè¼ÇÀÌ ¿Ï·áµÇµµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº ±âº» »óÅ¿¡¼ µ¥ÀÌÅ͸¦ ¼öÁ¤ÇÏ´Â Äõ¸®¸¦ ½ÇÇàÇÏ¸é µ¥ÀÌÅÍ°¡ ¼öÁ¤µÈ ÈÄ ÀÚµ¿À¸·Î Æ®·£Àè¼Ç¿Ï·áµÇ¾î µ¥ÀÌÅ͸¦ º¹±¸ ÇÒ¼ö ¾ø´Â°Í°ú ºñ±³µÇ´Â °³³äÀ¸·Î ½Ç¼ö·Î µ¥ÀÌÅ͸¦ Áö¿üÀ» ¶§¿¡µµ ROLLBACK 󸮰¡ °¡´ÉÇÏ°Ô ÇØ ÁÝ´Ï´Ù. IMPLICIT_TRANSACTION ¿É¼ÇÀÌ ¼³Á¤µÇ¾î ÀÖÀ»¶§´Â ´ÙÀ½°ú °°Àº ¹®ÀåÀ» »ç¿ëÇÒ¶§ ³»ºÎÀûÀ¸·Î Æ®·£Àè¼ÇÀÌ ÀÚµ¿À¸·Î ½ÃÀ۵Ǹç Æ®·£Àè¼ÇÀ» Á¾·áÇϱâ À§Çؼ´Â ¸í½ÃÀûÀ¸·Î COMMIT À̳ª ROLLBACK ¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
À§ÀÇ ¹®ÀåÀ» ½ÇÇàÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. À§ÀÇ ¹®ÀåÀ» ½ÇÇàÇϸé, INSERT TABEL_TBL VALUES(1) ¹®ÀÌ ½ÇÇàµÇ¸é¼ ÀÚµ¿À¸·Î Æ®·£Àè¼ÇÀÌ ½ÃÀ۵˴ϴÙ. ±×·¯³ª, ÀÚµ¿¿Ï·á°¡ µÇÁö ¾Ê±â ¶§¹®¿¡ ¿©·¯ºÐÀÌ ROLLBACK À̳ª COMMIT ¹®À» ÀÌ¿ëÇؼ µÇµ¹¸®°Å³ª, ¿Ï·á¸¦ ½Ãų¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ±â´ÉÀ» ÇØ ÁÖ´Â°Ô ¹Ù·Î SET IMPLICIT_TRANSACTIONS ¹®ÀÔ´Ï´Ù. ÀÌ°Ü¿¡¼ DBCC OPENTRAN ¸í·ÉÀº ÇöÀçÀÇ Æ®·£Àè¼ÇÀÇ »óŸ¦ º¸¿©ÁÝ´Ï´Ù. ¾î¶²°¡¿©??? ÇìÇì µµ¿òÀÌ µÇ¼ÌÀ¸¸é ÁÁ°Ú´Âµ.. ³Ê¹« ½¬¿î ³»¿ëµéÀÌ¿´½À´Ï´Ù. ±×·³,
|