하은양 믿음군 효실맘 호홍홍집s

Insert시 서브쿼리(Sub Query) 적용이 안되기 때문에 편법... 본문

가벼운 배움/MySql

Insert시 서브쿼리(Sub Query) 적용이 안되기 때문에 편법...

호홍홍집 2016. 12. 29. 17:51

INSERT INTO TB_MATCH_OPT (    
MAT_ID,
MEM_ID,
OBJ_ID,
OPT_ID,
REGDATE  

) VALUES (      

(SELECT CONCAT('0',LPAD(CAST(SUBSTR(IFNULL(MAX(MAT_ID),'00000000'),2,7) AS UNSIGNED) + 1,7,0)) FROM TB_MATCH_OPT),     
'B0000001',
'L0000002',
'O0000003',
        now()
);

아래와 같이 고치면 됨 (단, 1개의 값만 적용할 때 사용가능함)....

1. 일반 INSERT

INSERT INTO TB_MATCH_OPT (      
MAT_ID,
MEM_ID,
OBJ_ID,
OPT_ID,
REGDATE  
)
SELECT (SELECT CONCAT('0',LPAD(CAST(SUBSTR(IFNULL(MAX(MAT_ID),'00000000'),2,7) AS UNSIGNED) + 1,7,0)) FROM TB_MATCH_OPT),  
'B0000001',
'L0000002',
'O0000003',
now()
FROM DUAL;

2. 조건 INSERT(단, 1개의 값만 적용할 때 사용)

INSERT INTO TB_MATCH_OPT (      
MAT_ID,
MEM_ID,
OBJ_ID,
OPT_ID,
REGDATE  
)
SELECT (SELECT CONCAT('0',LPAD(CAST(SUBSTR(IFNULL(MAX(MAT_ID),'00000000'),2,7) AS UNSIGNED) + 1,7,0)) FROM TB_MATCH_OPT),  
'B0000001',
'L0000002',
'O0000003',
now()
FROM TB_MATCH_OPT
WHERE MAT_ID = '00000012';

※ 주의 :
   만약 조건에 "WHERE MEM_ID= 'B0000001'" 같이 여러개의 값을 데이터 복사식으로 넣을려면 중복에러가 발생하니 잘 생각해서

만들어야 함....ㅋㅋ


※ 프로그램이용한 처리(여러개를 불러와서 다시 처리...)...^^

// 넘어온 옵션 등록처리...

if(arr_optid != null && arr_optid.length > 0){

    sSql = "DELETE FROM TB_MATCH_OPT WHERE OBJ_ID ='"+item_id+"' ";

    iResult = dbhandle.dbUpdate(sSql);

    for(int i = 0; i < arr_optid.length; i++){

sSql = "SELECT CONCAT('0',LPAD(CAST(SUBSTR(IFNULL(MAX(MAT_ID),'00000000'),2,7) AS UNSIGNED) + 1,7,0)) FROM TB_MATCH_OPT";

String maxMatchOptId = dbhandle.getSelectone(sSql);

String opt_list_val = arr_optid[i];

sSql = "INSERT INTO TB_MATCH_OPT ( " +
"     MAT_ID  , " +
"     MEM_ID  , " +
"     OBJ_ID  , " +
"     OPT_ID , " +
"     REGDATE , " +
"     REG_ID  , " +
"     REG_IP  " +
" ) VALUES ( " +
"     '"+maxMatchOptId+"', " +
"     '"+SS_MEMID+"'  , " +
"     '"+item_id+"'  , " +
"     '"+opt_list_val+"' , " +
"     now()," +
"     '"+sUSER_ID+"'  ," +
"     '"+sREMOTE_IP+"'      " +
" ) ";

try{

   // System.out.println(sSql);
   iResult = dbhandle.dbUpdate(sSql);

}catch (Exception err){

   System.out.println("TB_MATCH_OPT INSERT ERR : " + err.toString());

}
    }
}