SAVEPOINT

Name

SAVEPOINT -- ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)³»¿¡ »õ·Î¿î ¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ Á¤ÀÇÇÑ´Ù

Synopsis

SAVEPOINT 
savepoint_name

¼³¸í

SAVEPOINT´Â, ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)³»¿¡ »õ·Î¿î ¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ ¼³Á¤ÇÕ´Ï´Ù.

¼¼ÀÌºê Æ÷ÀÎÆ®¿Í´Â Æ®·£Àè¼Ç(transaction)³»¿¡ ºÙÀ̴ Ưº°ÇÑ Ç¥½ÃÀÔ´Ï´Ù. ¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ ¼³Á¤ÇØ µÎ¸é(ÀÚ), ±× ÀÌÈÄ¿¡ ½ÇÇàµÈ Ä¿¸àµå¸¦ ¸ðµÎ ·Ñ¹é(rollback) ÇØ, Æ®·£Àè¼Ç(transaction)¸¦ ¼³Á¤½Ã »óÅ¿¡ µÇµ¹¸± ¼ö°¡ ÀÖ½À´Ï´Ù.

¸Å°³º¯¼ö

savepoint_name

»õ·Î¿î ¼¼ÀÌºê Æ÷ÀÎÆ®¿¡ ºÎ¿©ÇÏ´Â À̸§ÀÔ´Ï´Ù.

ÁÖ¼®

¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ ·Ñ¹é(rollback) ÇÏ·Á¸é ROLLBACK TO SAVEPOINT ¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä. ¼¼ÀÌºê Æ÷ÀÎÆ® ¼³Á¤ ÈÄ¿¡ ÇàÇØÁø ¸í·ÉÀÇ È¿°ú¸¦ º¸°ü À¯ÁöÇÑ Ã¤·Î ¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ ÆÄ±âÇÏ·Á¸é, RELEASE SAVEPOINT ¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.

¼¼ÀÌºê Æ÷ÀÎÆ®´Â Æ®·£Àè¼Ç(transaction) ºí·ÏÀÇ ¾ÈÂÊ¿¡¸¸ ¼³Á¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. 1°³ÀÇ Æ®·£Àè¼Ç(transaction)¾È¿¡´Â, º¹¼öÀÇ ¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ ¼³Á¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

¿¹Á¦

¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ ¼³Á¤ÇØ, ±× ÈÄ¿¡ ½ÇÇàÇÑ ¸ðµç Ä¿¸àµåÀÇ È¿°ú¸¦ Ãë¼ÒÇÕ´Ï´Ù.

BEGIN;
    INSERT INTO table1 VALUES (1);
    SAVEPOINT my_savepoint;
    INSERT INTO table1 VALUES (2);
    ROLLBACK TO SAVEPOINT my_savepoint;
    INSERT INTO table1 VALUES (3);
COMMIT;

»ó±âÀÇ Æ®·£Àè¼Ç(transaction)¿¡¼­´Â, 1À¸·Î 3Àº »ðÀԵ˴ϴٸ¸, 2´Â »ðÀÔµÇÁö ¾Ê½À´Ï´Ù.

¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ ¼³Á¤ÇØ, ±× ÈÄ¿¡ ÆÄ±âÇÕ´Ï´Ù.

BEGIN;
    INSERT INTO table1 VALUES (3);
    SAVEPOINT my_savepoint;
    INSERT INTO table1 VALUES (4);
    RELEASE SAVEPOINT my_savepoint;
COMMIT;

»ó±âÀÇ Æ®·£Àè¼Ç(transaction)¿¡¼­´Â 3À¸·Î 4ÀÇ ¾çÂÊ ¸ðµÎ°¡ »ðÀԵ˴ϴÙ.

ȣȯ¼º

SQL¿¡¼­´Â °°Àº À̸§ÀÇ ¼¼ÀÌºê Æ÷ÀÎÆ®°¡ ¼³Á¤µÇ¾úÀ» ¶§, ÀÚµ¿ÀûÀ¸·Î ¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ ÆÄ±âÇÏ°Ô µÇ¾î ÀÖ½À´Ï´Ù. PostgreSQL¿¡¼­´Â ¿À·¡µÈ ¼¼ÀÌºê Æ÷ÀÎÆ®µµ º¸°ü À¯ÁöµÇÁö¸¸, ·Ñ¹é(rollback)³ª ÇØ¹æ½Ã¿¡´Â »õ·Î¿î ¼¼ÀÌºê Æ÷ÀÎÆ®°¡ »ç¿ëµË´Ï´Ù (»õ·Î¿î ¼¼ÀÌºê Æ÷ÀÎÆ®°¡ ÇØ¹æµÇ¸é, ´Ù½ÃROLLBACK TO SAVEPOINT³ªRELEASE SAVEPOINT·ÎºÎÅÍ ¿À·¡µÈ ¼¼ÀÌºê Æ÷ÀÎÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù). ÀÌ Á¡ Àܴ̿Â,SAVEPOINT´Â ¿ÏÀüÇÏ°Ô SQL¿¡ µû¸£°í ÀÖ½À´Ï´Ù.

°ü·Ã Ç׸ñ

BEGIN , COMMIT , RELEASE SAVEPOINT , ROLLBACK , ROLLBACK TO SAVEPOINT