Animated Rainbow Nyan Cat

๋งค์ž…์ „ํ‘œ ์ €์žฅ

INSERT INTO C1(
               MALL_CODE, /*๋งค์žฅ*/
               DATE, /*์ผ์ž*/
               STO_CODE, /*์ ํฌ*/
               SLIP_NUM, /*์ „ํ‘œ๋ฒˆํ˜ธ(์ผ๋ณ„)*/
               SEQ_NUM, /*์ „ํ‘œ๋ฒˆํ˜ธ ๊ฐ™์„ ์‹œ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฒˆํ˜ธ*/
               QUANTITY, /*์ˆ˜๋Ÿ‰*/
               PRICE, /*๊ฐ€๊ฒฉ*/
               DETAIL /*์ƒ์„ธ์ •๋ณด*/
) VALUES(
         #{mallCode},
         #{date},
         #{stoCode},
         NVL((SELECT MAX(SLIP_NUM) + 1 /*SLIP_NUM*/
                FROM C0
               WHERE MALL_CODE = #{mallCode}
                 AND STO_CODE = #{stoCode}
                 AND DATE = #{date}), 0),
         NVL((SELECT MAX(SEQ_NUM) + 1 /*SEQ_NUM*/
                FROM C1
               WHERE MALL_CODE = #{mallCode}
                 AND STO_CODE = #{stoCode}
                 AND SLIP_NUM = NVL((SELECT MAX(SLIP_NUM) + 1
                                       FROM C0
                                      WHERE MALL_CODE = #{mallCode}
                                        AND STO_CODE = #{stoCode}
                                        AND DATE = #{date}), 0)
                 AND DATE = #{date}), 0),
         #{quantity},
         #{price, jdbcType=INTEGER},
         #{detail, jdbcType=VARCHAR}
)
NVL("๊ฐ’", "์ง€์ •๊ฐ’")

 

→ NVL ํ•จ์ˆ˜๋Š” ๊ฐ’์ด NULL์ธ ๊ฒฝ์šฐ ์ง€์ •๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ , NULL์ด ์•„๋‹ˆ๋ฉด ์›๋ž˜ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ „ํ‘œ๋ฒˆํ˜ธ๋Š” ์ผ๋ณ„๋กœ ๋งค๊ฒจ์ง€๊ณ , ์‹œํ€€์Šค ๋„˜๋ฒ„๋Š” ๊ฐ™์€ ์ „ํ‘œ๋ฒˆํ˜ธ ์•ˆ์—์„œ ๋งค๊ฒจ์ง€๋Š” ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ „ํ‘œ์ €์žฅํ•  ์‹œ, ๊ฐ™์€ ์ผ์ž์— ์ „ํ‘œ๊ฐ€ ์—†์„ ์‹œ ์ „ํ‘œ๋ฒˆํ˜ธ๋ฅผ 0์œผ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ , ์ „ํ‘œ๊ฐ€ ์žˆ์„ ์‹œ์—๋Š” ์ด์ „ ์ „ํ‘œ๋ฒˆํ˜ธ์— 1์„ ๋”ํ•ด์ฃผ๋„๋ก ์ž‘์„ฑํ•ด์•ผ ํ–ˆ๊ณ ,  ์‹œํ€€์Šค ๋„˜๋ฒ„๋Š” ๊ฐ™์€ ์ „ํ‘œ๋ฒˆํ˜ธ๊ฐ€ ์—†์„ ์‹œ์—” 0์œผ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ , ์žˆ์„ ์‹œ์—” ์ด์ „ ์‹œํ€€์Šค ๋„˜๋ฒ„์— 1์„ ๋”ํ•ด์ฃผ๋„๋ก ์ž‘์„ฑํ•ด์•ผ ํ–ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ „ํ‘œ๋ฒˆํ˜ธ๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ์ชฝ์—์„œ

NVL((SELECT MAX(SLIP_NUM) + 1 /*SLIP_NUM*/
       FROM C0 /*slip num์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”*/
      WHERE MALL_CODE = #{mallCode} /*๋งค์žฅ*/
        AND STO_CODE = #{stoCode} /*์ ํฌ*/
        AND DATE = #{date}), 0), /*์ผ์ž*/

์ด๋ ‡๊ฒŒ ์ „ํ‘œ๋ฒˆํ˜ธ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋งค์žฅ, ์ ํฌ, ์ผ์ž๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ์ด์ „ ์ ํฌ๋ฒˆํ˜ธ์— 1์„ ๋”ํ•ด์ฃผ๊ณ , ์—†์„ ์‹œ์—”(NULL์ด ๋ฆฌํ„ด๋˜๋ฉด) 0์ด ๋˜๋„๋ก NVLํ•จ์ˆ˜๋ฅผ ์จ ์ž‘์„ฑํ–ˆ๋‹ค.

์‹œํ€€์Šค ๋„˜๋ฒ„๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ์ชฝ์—์„œ๋Š”

NVL((SELECT MAX(SEQ_NUM) + 1 /*SEQ_NUM*/
       FROM C1 /*seq num์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”*/
      WHERE MALL_CODE = #{mallCode} /*๋งค์žฅ*/
        AND STO_CODE = #{stoCode} /*์ ํฌ*/
        AND SLIP_NUM = NVL((SELECT MAX(SLIP_NUM) + 1 /*slip num์ด ๋‹ค์Œ๊ณผ ๊ฐ™์„์‹œ์—(์กฐ๊ฑด)*/
                              FROM C0 /*slip num์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”*/
                             WHERE MALL_CODE = #{mallCode} /*๋งค์žฅ*/
                               AND STO_CODE = #{stoCode} /*์ ํฌ*/
                               AND DATE = #{date}), 0) /*์ผ์ž*/
        AND DATE = #{date}), 0), /*์ผ์ž*/

์œ„์—์„œ ์ž‘์„ฑํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์ „ํ‘œ๋ฒˆํ˜ธ๋ฅผ ๊ตฌํ•œ ์ฟผ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด where์ ˆ์—์„œ ํ•ด๋‹น slip num์™€ ๊ฐ™๋‹ค๋ฉด 1์„ ๋”ํ•ด์ฃผ๋„๋ก ํ•˜๊ณ , ์—†๋‹ค๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ž‘์„ฑํ–ˆ๋‹ค.

#{price, jdbcType = INTEGER},
#{detail, jdbcType = VARCHAR}

์ฟผ๋ฆฌ์˜ ๋งจ ๋์— ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค.

insert, update ์‹œ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์—†์„ ์‹œ, ๋ถ€์ ํ•ฉํ•œ ์—ด ์œ ํ˜• ('ํ•ด๋‹น ๋ณ€์ˆ˜=null') ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ์ œ์•ฝ์กฐ๊ฑด์— ์˜ํ•ด null ๊ฐ’์„ ํ—ˆ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ปฌ๋Ÿผ์— null ์ด ๋„˜์–ด์˜ฌ๋•Œ, jdbcType์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค.  #{Parameter, jdbcType=INTEGER} ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์„ ์–ธํ•ด์ค˜์•ผ ํ•œ๋‹ค. ๋’ค์—๋Š” ๋ฌด์กฐ๊ฑด ๋Œ€๋ฌธ์ž์—ฌ์•ผ ํ•œ๋‹ค.