제약 조건을 이용하면 제약조건이 맞지 않는다는 에러나 예외처리를 해야하는데 not exists를 이용하면 이런 제약조건 위반없이 데이터를 유일하게 입력할 수 있다.
INSERT INTO table (field)
SELECT 'value' FROM DUAL
WHERE NOT EXISTS (SELECT * FROM table WHERE field='value')
실제 예를 들어서 RssItems라는 테이블 안에 link값을 저장하는데 http://blog.saltfactory라는 한번 저장된 link가 있는 경우는 입력하지 않게하려고 할때 다음과 같이하면 된다.
INSERT INTO RssItems (link)
SELECT 'http://blog.saltfactory.net' FROM DUAL
WHERE NOT EXISTS (SELECT * FROM RssItems WHERE link='http://blog.saltfactory.net')
1) (s_nb_1st,s_nb_2nd,note,rg_dt,rg_id,up_dt,up_id) where not exists( select * from net_point where s_nb_1st = '7117' and s_nb_2nd = '6667');
2) (s_nb_1st,s_nb_2nd,lv_cd,importance,note,rg_dt,rg_id,up_dt,up_id)
where not exists( select * from net_point where s_nb_1st = '7117' and s_nb_2nd = '6666'); |
1번과 같이 하면 syntax 오류 발생한다.
'Programming > SQL' 카테고리의 다른 글
mysql 사용자/권한 관리 (0) | 2016.01.13 |
---|---|
Communications link failure due to underlying exception (0) | 2013.07.05 |
[오라클] 트리거 TRIGGER (1) | 2012.02.03 |
Toad에서 DB Export 하기 (0) | 2011.12.23 |
TOAD script 추출하기(Database Script, Schema Script) (0) | 2011.12.08 |
댓글