Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

4 sposoby sprawdzenia, czy tabela istnieje przed upuszczeniem jej w SQL Server (T-SQL)

Upuszczenie tabeli w SQL jest łatwe. Wystarczy użyć DROP TABLE myTable gdzie myTable to nazwa tabeli, którą chcesz usunąć. Możesz użyć tej metody, aby usunąć tabelę z SQL Server za pomocą skryptu T-SQL.

Ale otrzymasz błąd, jeśli tabela w rzeczywistości nie istnieje. To znaczy, chyba że najpierw sprawdzisz istnienie tabeli.

Poniżej znajdują się cztery sposoby wykorzystania T-SQL do sprawdzenia, czy tabela istnieje przed jej usunięciem.

Opcja 1:IF EXISTS Klauzula

Korzystając z SQL Server 2016 lub nowszego, możemy użyć IF EXISTS klauzula DROP TABLE instrukcja sprawdzająca istnienie tabeli, zanim spróbujemy ją usunąć:

DROP TABLE IF EXISTS t1;

Spowoduje to upuszczenie tabeli o nazwie t1 jeśli istnieje.

Oto wynik uruchomienia powyższej instrukcji, gdy tabela istnieje (i dlatego została usunięta):

Commands completed successfully.

A oto, co otrzymujemy, jeśli natychmiast ponownie uruchomimy instrukcję (tj. Gdy tabela nie istnieje):

Commands completed successfully.

To samo wyjście. Tak więc instrukcja działa pomyślnie, niezależnie od tego, czy tabela istnieje, czy nie.

Oto, co się stanie, jeśli spróbujemy usunąć tabelę bez użycia IF EXISTS klauzula:

DROP TABLE t1;

Wynik:

Msg 3701, Level 11, State 5, Line 1
Cannot drop the table 't1', because it does not exist or you do not have permission.

Opcja 2:Sprawdź identyfikator obiektu

Alternatywnie możemy użyć OBJECT_ID() funkcja sprawdzająca istnienie tabeli, zanim spróbujemy ją usunąć:

IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO

Powyższy przykład sprawdza identyfikator obiektu dla dbo.t1 stół. Drugi argument OBJECT_ID() określa typ obiektu, którego szukamy. W tym przypadku używamy U , czyli „tabela zdefiniowana przez użytkownika”.

OBJECT_ID() zwraca numer identyfikacyjny obiektu bazy danych obiektu o zakresie schematu. Jeśli obiekt istnieje, nie zwróci NULL i dlatego możemy usunąć tabelę. Jeśli obiekt nie istnieje, lub jeśli nie masz do niego dostępu, funkcja zwraca NULL, a DROP TABLE oświadczenie nie zostanie uruchomione.

Opcja 3:Zapytanie o information_schema.tables

Innym sposobem sprawdzenia, czy tabela już istnieje, jest zapytanie information_schema.tables widok:

IF EXISTS (
    SELECT * FROM information_schema.tables
    WHERE table_schema = 'dbo' AND table_name = 't1') 	
    DROP TABLE dbo.t1;

To działa podobnie do poprzedniego przykładu; sprawdza istnienie tabeli i tworzy ją tylko wtedy, gdy ona nie istnieje.

Opcja 4:Zapytanie o sys.tables

Możemy również zapytać o sys.tables widok katalogu systemowego:

IF EXISTS (
    SELECT * FROM sys.tables t 
    JOIN sys.schemas s ON (t.schema_id = s.schema_id) 
    WHERE s.name = 'dbo' AND t.name = 't1') 	
    DROP TABLE dbo.t1;

SQL Server zapewnia wiele innych sposobów sprawdzania istnienia tabel. Zobacz 6 sposobów sprawdzenia, czy tabela istnieje w SQL Server, aby zapoznać się z przykładami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATEFROMPARTS() Przykłady w SQL Server (T-SQL)

  2. Jak wbudować funkcjonalność RUNAS /NETONLY do programu (C#/.NET/WinForms)?

  3. Podłączanie Delphi w systemie Linux do SQL Server

  4. Data i godzina programu SQL Server PODOBNY wybór?

  5. Przenieś dane z jednej bazy danych do innej bazy danych