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 
4

1 回答 1

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);
于 2012-11-27T21:42:38.187 回答