[ORACLE] insert 시에 not exist 사용해서 중복값 체크
DB2009. 2. 26. 10:48
CREATE TABLE SAMPLE(
ID VARCHAR2(10) PRIMARY KEY
, CREATE_DATE DATE
);
INSERT INTO SAMPLE (ID, NAME)
SELECT 'test', SYSDATE FROM DUAL A
WHERE NOT EXISTS (
SELECT 0
FROM SAMPLE
WHERE ID = 'test'
)
통계를 뽑아 DB insert 하게 만들어놓고 crontab에 등록해서 돌려놨더니.... 아침에 출근해서
DB확인 결과 insert data가 몇개없었다.... 로그확인결과... insert 도중 primary key에 걸려 exception이 발생했다. 통계자료다 보니 데이터도많고... catch절에서 잡아서 다시 돌릴수도 없고해서..
찾다가 위의 방법을 찾았다 ^^ 더좋은방법이 있을텐뎅... 일단 급하게 저거라도.. ^^
merge를 사용하려다.. key값과 생성일만 있는 테이블이라.. 생성일을 업데이트 할수없다...
key값을 업데이트 할수도 없고... 그래서.. ^^
, CREATE_DATE DATE
);
INSERT INTO SAMPLE (ID, NAME)
SELECT 'test', SYSDATE FROM DUAL A
WHERE NOT EXISTS (
SELECT 0
FROM SAMPLE
WHERE ID = 'test'
)
통계를 뽑아 DB insert 하게 만들어놓고 crontab에 등록해서 돌려놨더니.... 아침에 출근해서
DB확인 결과 insert data가 몇개없었다.... 로그확인결과... insert 도중 primary key에 걸려 exception이 발생했다. 통계자료다 보니 데이터도많고... catch절에서 잡아서 다시 돌릴수도 없고해서..
찾다가 위의 방법을 찾았다 ^^ 더좋은방법이 있을텐뎅... 일단 급하게 저거라도.. ^^
merge를 사용하려다.. key값과 생성일만 있는 테이블이라.. 생성일을 업데이트 할수없다...
key값을 업데이트 할수도 없고... 그래서.. ^^