¿À´Ã ¿À¶óŬ¿¡ ´ëÇØ Àá±ñ º¼ ±âȸ°¡ »ý°Ü º¸´øÁß¿¡ Æ®¸®°Å¶ó´Â ³à¼®°ú ¸¶ÁÖÄ¡°Ô µÇ¾ú½À´Ï´Ù.
±×·¡µµ °øºÎÇÑ ³»¿ëÀε¥ ±î¸ÔÁö ¾Ê±â À§ÇØ ±â·ÏÇØ µÖ¾ß °Ú½À´Ï´Ù.
Æ®¸®°Å¸¦ ÀÌ¿ëÇØ Æ¯Á¤ Å×À̺íÀÇ µ¥ÀÌÅÍ¿¡ »ý±â´Â ÀÛ¾÷À» °¨½Ã ÇÏ¿© Ãß°¡ÀûÀÎ ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸¶Ä¡ ½ºÇÁ¸µ AOPÀÇ Advice°°Àº ´À³¦ÀÔ´Ï´Ù. ÇÏÁö¸¸ DB¿¡¼ ÀÌ·±°ÍÀ» ¸¶±¸ ¾²´Ùº¸¸é ÆÛÆ÷¸Õ½º ÀúÇÏ´Â ÀÚ¸íÇÑ °á°úÀÏ°Í °°³×¿ä.
[code]SQL> DESC RENTAL_LIST;
À̸§ ³Î? À¯Çü
—————————————– ——– —————————-
NO NOT NULL NUMBER(4)
RENTAL_DATE NOT NULL DATE
TO_RETURN_DATE DATE
RETURN_DATE DATE
CUSTOMER_NO NOT NULL NUMBER(4)
DVD_NO NOT NULL NUMBER(4)
SQL> DESC DVD_TITLE;
À̸§ ³Î? À¯Çü
—————————————– ——– —————————-
NO NOT NULL NUMBER(4)
TITLE NOT NULL VARCHAR2(20)
GENRE VARCHAR2(20)
DIRECTOR VARCHAR2(20)
MAIN_ACTOR VARCHAR2(20)
PURCHASE_DATE DATE
QUANTITY NOT NULL NUMBER(2)[/code]
À§¿Í °°Àº ½ºÅ°¸¶ ±¸Á¶ÀÏ ¶§ DVDÀÇ ·»Å»ÀÌ ÀϾ¸é DVD_TITLEÀÇ QUANTITY¸¦ 1°³ ÁÙÀÌ°í, ¹Ý³³ ÀÏÀÚÀÎ RETURN_DATE¸¦ RENTAL_DATEÀÇ 3ÀÏ ÈÄ·Î ÀÚµ¿ ÀÔ·ÂÇÏ´Â Äڵ带 ÀÛ¼ºÇÏ¿© º¾½Ã´Ù.
BEFORE¿Í AFTER¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.
[code]CREATE OR REPLACE TRIGGER CHANGE_QUANTITY
AFTER INSERT ON RENTAL_LIST FOR EACH ROW
BEGIN
UPDATE DVD_TITLE SET QUANTITY = QUANTITY – 1 WHERE NO = :NEW.DVD_NO;
END;
INSERT INTO RENTAL_LIST(NO, RENTAL_DATE, TO_RETURN_DATE, RETURN_DATE, CUSTOMET_NO, DVD_NO)
VALUES(RENTAL_SEQ.NEXTVAL, ¡®2007-11-02¡¯, ¡®2007-11-05¡¯, ¡±, 50, 1) [/code]
À§¿Í °°Àº Äõ¸®¹® ½ÇÇà½Ã :NEW.DVD_NO¿¡´Â ¹æ±Ý ÀÔ·ÂµÈ DVD_NOÀÇ °ªÀÌ ´ëÀԵ˴ϴÙ. DVD_NO·Î DVD_TITLE Å×ÀÌºí¿¡¼ °ªÀ» ã¾Æ QUANTITY¸¦ 1 °¨¼Ò½ÃÅ°°Ô µË´Ï´Ù.
AFTER INSERT ON RENTAL_LIST ¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ RENTAL_LIST¿¡ INSERT°¡ ÀÏ¾î³ ÈÄ¿¡ ÀÌ Æ®¸®°Å°¡ ½ÇÇàµË´Ï´Ù.
FOR EACH ROW ´Â ¿©·¯ ROW°¡ ¿µÇâÀ» ¹Þ¾ÒÀ» °æ¿ì °¢°¢À» ½ÇÇàÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù.
À̹ø¿¡´Â INSERT Á÷Àü¿¡ RETURN_DATE¿¡ RENTAL_DATEÀÇ 3ÀÏ ÈÄ ³¯Â¥¸¦ ÀÚµ¿À¸·Î ÀÔ·ÂÇÏ´Â Æ®¸®°Å¸¦ ÀÛ¼ºÇØ º¸ÁÒ.
[code]CREATE OR REPLACE TRIGGER AUTO_ADDED_RETURN_DATE
BEFORE INSERT ON RENTAL_LIST FOR EACH ROW
BEGIN
:NEW.RETURN_DATE := :NEW.RENTAL_DATE + 3
END;[/code]
BEFORE INSERT ON RENTAL_LIST ¿¡¼ º¼ ¼ö ÀÖµíÀÌ INSERT°¡ ÀϾ±â Àü¿¡ ½ÇÇàµË´Ï´Ù.
°ªÀÌ ÀԷµÇÁö ¾ÊÀº :NEW.RETURN_DATE ¿¡ :NEW.RENTAL_DATE¸¦ 3Áõ°¡½ÃÄÑ ÀÔ·ÂÇÕ´Ï´Ù. +3À» Çϸé 3ÀÏÀÌ Áõ°¡µË´Ï´Ù.
À̷νá RETURN_DATE¿¡µµ °ªÀÌ ÀÚµ¿À¸·Î ÀԷµ˴ϴÙ.