복붙노트

[SQL] DROP IF는 VS DROP 존재?

SQL

DROP IF는 VS DROP 존재?

어떤 차이 사이가 있다면 누군가가 말해 줄 수

DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]

내 MVC 웹 응용 프로그램에서 JDBC 템플릿을 사용하고 있기 때문에이 요청하고있다. 내가 DROP [TABLE_NAME]을 사용하는 경우 오류는 테이블 존재를 밝혔다. 내가 DROP IF가 [TABLE_NAME]를 EXISTS 사용하는 경우 그리고 그것은 잘못된 SQL 구문을 말한다. 어떤 하나의 도움이 수 있습니까?

해결법

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

    1.표준 SQL 구문은

    표준 SQL 구문은

    DROP TABLE table_name;
    

    존재하는 경우는 표준 아니다; 다른 플랫폼은 다른 구문을 지원하거나 전혀 지원하지 않을 수 있습니다. PostgreSQL을, 상기 구문은

    DROP TABLE IF EXISTS table_name;
    

    테이블이 존재하지 않는 경우 첫 번째 오류가 발생한다, 또는 다른 데이터베이스 오브젝트에 의존합니다. 대부분의 경우, 다른 데이터베이스 개체는 외래 키 참조가 될 것입니다,하지만 너무 다른 사람이있을 수 있습니다. 테이블이 존재하지 않는 경우 (뷰는, 예를 들어.) 두 번째는 오류가 발생하지 않지만 다른 데이터베이스 개체가 종속 경우 여전히 오류가 발생합니다.

    테이블, 그리고에 의존하는 다른 모든 오브젝트, 이들의 사용을 놓습니다.

    DROP TABLE table_name CASCADE;
    DROP TABLE IF EXISTS table_name CASCADE;
    

    신중 CASCADE를 사용합니다.

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

    2.그것은 직접적으로 요구되는 것이 아니다. 나는 많은 다른 사람들도 할 생각하지만 제대로 드롭 테이블을 수행하는 방법을 찾고, 나는이 질문을 통해 비틀 거렸다.

    그것은 직접적으로 요구되는 것이 아니다. 나는 많은 다른 사람들도 할 생각하지만 제대로 드롭 테이블을 수행하는 방법을 찾고, 나는이 질문을 통해 비틀 거렸다.

    SQL 서버에서 2016+ 당신은 사용할 수 있습니다

    DROP TABLE IF EXISTS dbo.Table
    

    SQL 서버 <2016 내가하는 일은 영구 테이블에 대해 다음이다

    IF OBJECT_ID('dbo.Table', 'U') IS NOT NULL 
      DROP TABLE dbo.Table; 
    

    또는이 임시 테이블

    IF OBJECT_ID('tempdb.dbo.#T', 'U') IS NOT NULL
      DROP TABLE #T; 
    
  3. ==============================

    3.당신은 당신의 구문에서 테이블을 잊었 :

    당신은 당신의 구문에서 테이블을 잊었 :

    drop table [table_name]
    

    이는 테이블 삭제합니다.

    사용

    drop table if exists [table_name]
    

    검사 테이블을 삭제하기 전에 존재하는 경우. 이 존재하는 경우,이 삭제됩니다. 그렇지 않은 경우, 오류가 발생되지 않으며 어떠한 조치가 취해지지한다.

  4. ==============================

    4.

    DROP TABLE IF EXISTS [table_name]
    

    최초로 확인 테이블은 않는 경우 테이블을 삭제 존재하는 경우 동안

    DROP TABLE [table_name]
    

    그것은이 오류로 종료 존재하지 않는 그렇다면, 확인하지 않고 삭제

  5. ==============================

    5.같은 이름의 테이블이 존재하지 않는 경우 DROP IF는 아무것도하지 않습니다 만 존재하는 동안, DROP 오류와 함께 실패합니다.

    같은 이름의 테이블이 존재하지 않는 경우 DROP IF는 아무것도하지 않습니다 만 존재하는 동안, DROP 오류와 함께 실패합니다.

    당신이 생성 / 스크립트를 사용하여 데이터베이스를 modifi 경우에 유용합니다; 이 방법은 테이블의 이전 버전이 삭제되는 것을 직접 확인 할 필요가 없습니다. 당신은 단지 DROP IF가 존재하지 잊어 버려요.

    물론,이 옵션을 지원하지 않을 수 있습니다 현재 DB 엔진은, 당신이 제공 한 정보와 오류에 대한 자세한 이야기하기 어렵다.

  6. from https://stackoverflow.com/questions/9565818/drop-if-exists-vs-drop by cc-by-sa and MIT license