2009-12-08 2 views
2

다시 실행 가능한 SQL 스크립트를 작성하는 방법은 mysql에 있습니까? 나는 'IF EXISTS'구문을 시도했지만 저장 프로 시저에서만 작동하는 것으로 보입니다. '선택'구문이 원하는대로 수행되지 않는 것처럼 보입니다.다시 실행 가능한 mysql 업그레이드 스크립트

IF NOT EXISTS (select * from table where name='Name') Then insert into table values('Name'); 
else select 'Name has already been inserted into table'; 
end if; 

감사 :

이상적으로 내가 좋아하는 일을하고 싶습니다.

+0

MySQL 매뉴얼을 보면 "제어 구조"아래에 필요한 모든 것을 찾을 수 있습니다 –

답변

0

데이터베이스 스키마 리비전을 적절한 테이블에 저장하고 업데이트 처리를위한 기준으로 사용할 수 있습니까?

-2

우리는 SQL 섹션 우리가 반복 원하는을 관리 (SQL 서버)

IF 0 = (SELECT COUNT(*) FROM <your table> WHERE <your condition>) 
BEGIN 
    <your work here> 
END 

같은 구문을 사용합니다. 스크립트가 다시 실행되고 값이 있으면 카운트 (*)가 0이 아니며 다시 작업을 수행하지 않습니다.

+0

이것은 가장 유망한 것으로 보이지만 특정 버전의 MySQL에 종속되어 있습니까? 5.0에서 작동하지 않는 것 같습니다 ... 더 완벽한 예제를 제공 할 수 있습니까? –

+0

앞서 지적한 것처럼 구문은 SQL Server에서 가져온 것입니다. * 기술 *이 번역되어야합니다. My SQL이 흐름 제어를 제공한다는 T/SQL과 같은 절차 언어가 무엇인지 모르겠습니다. – DaveE

1

당신은 사용할 수 있습니다 : 당신은 행이 삽입 여부되었는지 여부를 반환에서 볼 수

INSERT IGNORE INTO t1 ... 

. 고유 한 제한 조건이 있어야하며, 그렇지 않으면 중복을 가져옵니다. 기본 키가있는 경우 이는 고유 제한이기도합니다.

0
insert into myTable(name) 
select 'some_name_value' from myTable 
where not exists (select 1 from myTable where name = 'some_name_value') 
limit 1; 

이미 존재하지 않는 경우 값을 삽입합니다.

관련 문제