[SQL] 테이블이 비어있는 경우 INSERT를 실행?
SQL테이블이 비어있는 경우 INSERT를 실행?
같은 카운트 조건에서 뭔가를 삽입 할 수있는 방법이 있나요 :
INSERT INTO my_table (colname) VALUES('foo') IF COUNT(my_table) < 1
테이블이 현재 비어있는 경우 기본적으로 나는 하나의 기본 레코드를 삽입하려고합니다. 내가 MySQL을 사용하고 있습니다.
해결법
-
==============================
1.대신 값을 사용하여 SELECT는 WHERE 절이있는 쿼리를 확장 할 수 있습니다.
대신 값을 사용하여 SELECT는 WHERE 절이있는 쿼리를 확장 할 수 있습니다.
COUNT보다 더 나은 및 빠른 검사를한다 EXISTS
INSERT INTO my_table (colname) SELECT 'foo' WHERE NOT EXISTS (SELECT * FROM my_table)
-
==============================
2.한 가지 방법은 열에 고유 키를 배치하는 것입니다. 그런 다음 바꾸기 실행 :
한 가지 방법은 열에 고유 키를 배치하는 것입니다. 그런 다음 바꾸기 실행 :
REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
-
==============================
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 존재 빨리 많은 수의 행이있는 테이블에 속도가 느려질 수 있습니다 카운트를하는 것보다입니다.
from https://stackoverflow.com/questions/5307164/execute-insert-if-table-is-empty by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 와일드 카드로 교체 MySQL은 (0) | 2020.06.13 |
---|---|
[SQL] 내장 기능은 각 단어의 첫 글자를 대문자로 (0) | 2020.06.13 |
[SQL] 어떻게 SQL Server의 저장 프로 시저에서 CSV 출력 파일을 생성합니다 (0) | 2020.06.13 |
[SQL] SQL의 LIMIT 문은 얼마나 보편적인가? (0) | 2020.06.13 |
[SQL] PDO와 함께 LIKE에 대한 명명 된 매개 변수를 사용하여 (0) | 2020.06.13 |