복붙노트

[SQL] 테이블이 비어있는 경우 INSERT를 실행?

SQL

테이블이 비어있는 경우 INSERT를 실행?

같은 카운트 조건에서 뭔가를 삽입 할 수있는 방법이 있나요 :

INSERT INTO my_table (colname) VALUES('foo') IF COUNT(my_table) < 1

테이블이 현재 비어있는 경우 기본적으로 나는 하나의 기본 레코드를 삽입하려고합니다. 내가 MySQL을 사용하고 있습니다.

해결법

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

    1.대신 값을 사용하여 SELECT는 WHERE 절이있는 쿼리를 확장 할 수 있습니다.

    대신 값을 사용하여 SELECT는 WHERE 절이있는 쿼리를 확장 할 수 있습니다.

    COUNT보다 더 나은 및 빠른 검사를한다 EXISTS

    INSERT INTO my_table (colname)
    SELECT 'foo'
    WHERE NOT EXISTS (SELECT * FROM my_table)
    
  2. ==============================

    2.한 가지 방법은 열에 고유 키를 배치하는 것입니다. 그런 다음 바꾸기 실행 :

    한 가지 방법은 열에 고유 키를 배치하는 것입니다. 그런 다음 바꾸기 실행 :

    REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name [(col_name,...)]
        {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    
  3. ==============================

    3.이것은 쉽게 읽을 수 있습니다 :

    이것은 쉽게 읽을 수 있습니다 :

    INSERT INTO my_table (colname) 
    SELECT 'foo' FROM DUAL
    WHERE NOT EXISTS (SELECT * FROM my_table);
    

    가치관의 부족이 값을 제공 DUAL FROM 선택 (SELECT)에 의해 완화된다. DUAL의 FROM 항상 필요하지 않지만 (Percona I의 설치가 사용하고 같은)이 필요 이상한 구성을 위해 그것을 포함 다치게하지 않습니다.

    NOT 존재 빨리 많은 수의 행이있는 테이블에 속도가 느려질 수 있습니다 카운트를하는 것보다입니다.

  4. from https://stackoverflow.com/questions/5307164/execute-insert-if-table-is-empty by cc-by-sa and MIT license