복붙노트

[SQL] 행되지 존재하는 경우 삽입 신탁

SQL

행되지 존재하는 경우 삽입 신탁

insert ignore into table1 
select 'value1',value2 
from table2 
where table2.type = 'ok'

나는이 프로그램을 실행할 때 나는 오류가 "키워드 INTO 실종"얻는다.

어떤 아이디어?

해결법

  1. ==============================

    1.무시하기 때문에하는 것은 오라클의 키워드 없습니다. 즉 MySQL의 구문입니다.

    무시하기 때문에하는 것은 오라클의 키워드 없습니다. 즉 MySQL의 구문입니다.

    당신이 할 수있는 것은 사용 MERGE입니다.

    merge into table1 t1
        using (select 'value1' as value1 ,value2 
               from table2 
               where table2.type = 'ok' ) t2
        on ( t1.value1 = t2.value1)
    when not matched then
       insert values (t2.value1, t2.value2)
    /
    

    오라클에서 우리는 두 가지를 처리하지 않고 병합을 사용할 수 있습니다 10g. 9i의에서 우리는 '더미'일치 분기를 사용했다.

    더 옛날 버전에서는 유일한 옵션 중 하나를했다 :

  2. ==============================

    2.이 버전 11g 릴리스 2를 사용하려면 운이 충분이있는 경우, 당신은 힌트 IGNORE_ROW_ON_DUPKEY_INDEX를 사용할 수 있습니다.

    이 버전 11g 릴리스 2를 사용하려면 운이 충분이있는 경우, 당신은 힌트 IGNORE_ROW_ON_DUPKEY_INDEX를 사용할 수 있습니다.

    INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(table1(id)) */ INTO table1 SELECT ...
    

    문서에서 : http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/sql_elements006.htm#CHDEGDDG

    내 블로그에서 예 : http://rwijk.blogspot.com/2009/10/three-new-hints.html

    문안 인사, 롭.

  3. ==============================

    3.당신이 "삽입"와 "에"사이의 의사 단어 "무시"를 입력하기 때문에!

    당신이 "삽입"와 "에"사이의 의사 단어 "무시"를 입력하기 때문에!

    insert ignore into table1 select 'value1',value2 from table2 where table2.type = 'ok'
    

    해야한다:

    insert into table1 select 'value1',value2 from table2 where table2.type = 'ok'
    

    귀하의 질문에 제목 "행이 없습니다 존재하는 경우 오라클 삽입"에서 나는 수단 "이 이미 존재하는 경우 행을 삽입하려고하지 않는다"고 오라클의 키워드는 "무시"생각되었다 가정합니다. 어쩌면이 다른 DBMS에서 작동하지만 오라클하지 않습니다. 당신은 MERGE 문을 사용하거나 같은 존재 여부를 확인할 수 있습니다 :

    insert into table1 
    select 'value1',value2 from table2 
    where table2.type = 'ok'
    and not exists (select null from table1
                    where col1 = 'value1'
                    and col2 = table2.value2
                   );
    
  4. from https://stackoverflow.com/questions/3147874/oracle-insert-if-row-not-exists by cc-by-sa and MIT license