2014-04-14 1 views
0

IF object_id('player_data', 'U') IS NOT NULL SELECT 'player_data exists' AS '' ELSE SELECT 'player_data does not exist' AS ''테이블이 유효한지 확인하는 이유는이 SQL 문이 아닙니까?

일단 설정되면 player_data와 다른 이름의 테이블이 포함됩니다. 시작할 때 데이터베이스가 구성되어 있는지 확인해야하므로이 코드 블록을 사용하려고합니다.이 코드 블록은 테스트 용으로 분명히 사용되며 데이터를 읽는 것으로 진행할 수 있는지 또는 초기 설치를해야 하는지를 확인합니다. "# 1064 - SQL 구문에 오류가 있습니다"라는 오류 메시지가 나타나는 이유는 무엇입니까?

+0

왜 당신은 단순히'쇼 테이블을 사용하지 않는을, '확인 어떤 테이블이 존재합니까? – arkascha

+0

'object_id'는 SQL Server의 함수입니다. 나는 MySQL이 같은 기능을 가지고 있다고 생각하지 않지만 오인 될 수 있습니다. – Brandon

+0

@arkascha, 그 명령을 사용하여 특정 테이블의 존재 여부를 확인하려면 어떻게해야합니까? – SaxSalute

답변

0

PRINT은 (는) SQL 키워드입니다.

SELECT 'player data exists' as '' 
+0

흠, 예를 들어 어딘가에서 사용 된 것을 보았습니다. 나는 실수했다고 생각한다. – SaxSalute

1

당신은 그 이름의 표과 같이 현재 데이터베이스에 존재하는지 information_schema.tables을 조회 할 수 있습니다 :

당신이 당신의 결과에 문자열을 인쇄 할 경우, 당신은이 같은 쿼리해야
select (case 
    when count(*) = 0 
    then 'player_data does not exist' 
    else 'player_data exists' 
    end)   
from information_schema.tables 
where table_schema = database() 
and table_name = 'player_data'; 

또는 당신은 단지 테이블이 이미 존재하는 경우 아무것도 할 것이다 create table if not exists를 사용하여 테이블 생성을 시도 할 수 있습니다 :

create table if not exists player_data 
... 
+0

데이터베이스 기능의 중요성은 무엇입니까? 쿼리가 호출 된 데이터베이스를 반환합니까? – SaxSalute

+0

예, 세션의 현재 데이터베이스 (스키마) 이름을 반환합니다. "player_data"라는 이름의 테이블이 다른 스키마에있을 수 있기 때문에 쿼리에 추가했습니다. –

+0

차가움. 나는 database()가 "information_schema"를 반환했기 때문에 database()를 my database의 리터럴 이름으로 변경함으로써 작동하도록했습니다. – SaxSalute

관련 문제