2012-11-27 61 views
3

如何在Oracle中不存在記錄的情況下插入記錄?這裏是我想要做的事:如何在甲骨文中不存在記錄的情況下插入記錄?

IF NOT EXISTS (SELECT * FROM AROH_FAA_AIRPORT WHERE AIRPORT_ABBREVIATION = '0D7') 
BEGIN 
    insert into AROH_FAA_AIRPORT 
    (FAA_AIRPORT_OID,CITY,FAA_LISTED_AIRPORT_NAME,AIRPORT_ABBREVIATION) 
    values(AROH_FAA_AIRPORT_SEQ.nextval,'ADA','ADA','0D7') 
END 
+0

我不知道甲骨文的SQL(還),@a_horse_with_no_name – hd1

回答

7
insert into AROH_FAA_AIRPORT 
    (FAA_AIRPORT_OID,CITY,FAA_LISTED_AIRPORT_NAME,AIRPORT_ABBREVIATION) 
select AROH_FAA_AIRPORT_SEQ.nextval,'ADA','ADA','0D7') 
from dual 
where not exists (select 42 
        from AROH_FAA_AIRPORT 
        WHERE AIRPORT_ABBREVIATION = '0D7'); 

另外,您可以使用MERGE語句:

merge into AROH_FAA_AIRPORT a 
using (
    select 'ADA' city, 
      'ADA' as faa_listed_airport_name, 
      '0D7' as as airport_abbreviation 
    from dual 
) t ON (t.city = a.city) 
when not matched then 
    insert 
    (FAA_AIRPORT_OID, 
     CITY, 
     FAA_LISTED_AIRPORT_NAME, 
     AIRPORT_ABBREVIATION) 
    values 
    (AROH_FAA_AIRPORT_SEQ.nextval, 
     t.city, 
     t.faa_listed_airport_name, 
     t.airport_abbreviation); 
相關問題