Udostępnij za pomocą


TABELA DROP (Transact-SQL)

Dotyczy do:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSystem Platform Analitycznych (PDW)Magazyn w Microsoft Fabric

Usuwa jedną lub więcej definicji tabel oraz wszystkie dane, indeksy, wyzwalacze, ograniczenia i specyfikacje uprawnień dla tych tabel. Każdy widok lub procedura przechowywana, która odnosi się do upuszczonej tabeli, musi być wyraźnie usunięta za pomocą DROP VIEW lub DROP PROCEDURE. Aby zgłosić zależności w tabeli, użyj sys.dm_sql_referencing_entities.

Transact-SQL konwencje składni

Składnia

-- Syntax for SQL Server, Azure SQL Database, Warehouse in Microsoft Fabric

DROP TABLE [ IF EXISTS ] { database_name.schema_name.table_name | schema_name.table_name | table_name } [ ,...n ]
[ ; ]
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse

DROP TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
[;]

Arguments

database_name

To nazwa bazy danych, w której utworzono tabelę.

Azure SQL Database obsługuje trzyczęściowy format database_name.schema_name.object_name nazwy, gdy database_name jest aktualną bazą danych lub database_name jest tempdb i object_name zaczyna się od # lub ##. Azure SQL Database nie obsługuje nazw czteroczęściowych.

JEŚLI ISTNIEJE

Dotyczy do: SQL Server (SQL Server 2016 (13.x) do obecnej wersji).

Warunkowo rezygnuje z tabeli tylko wtedy, gdy już istnieje.

schema_name

To nazwa schematu, do którego należy ta tabela.

table_name

To nazwa tabeli, którą ma się usunąć.

Uwagi

DROP TABLE nie może być użyty do usunięcia tabeli, do której odwołano się przez ograniczenie FOREIGN KEY . Ograniczenie referencyjne FOREIGN KEY lub tabela odniesień muszą zostać usunięte jako pierwsze.

W tym samym DROP TABLE kontucie można usunąć wiele tabel. Jeśli zarówno tabela referencyjna w ograniczeniu FOREIGN KEY , jak i tabela z referencjonowanym kluczem głównym lub unikalnym są wyrzucane w tym samym DROP TABLE kontu, tabela referencyjna musi być wymieniona jako pierwsza.

Gdy tabela zostanie porzucona, reguły lub wartości domyślne w tabeli utracą powiązanie, a wszelkie ograniczenia lub wyzwalacze skojarzone z tabelą zostaną automatycznie porzucone. Jeśli ponownie utworzysz tabelę, musisz ponownie utworzyć odpowiednie reguły i wartości domyślne, ponownie utworzyć wszystkie wyzwalacze i dodać wszystkie wymagane ograniczenia.

Jeśli usuniesz wszystkie wiersze w tabeli za pomocą DELETE instrukcji lub instrukcji TRUNCATE TABLE , definicja tabeli istnieje, dopóki nie zostanie usunięta za pomocą DROP TABLE.

Jeśli usuniesz tabelę zawierającą kolumnę varbinary(max) z tym atrybutem FILESTREAM , żadne dane przechowywane w systemie plików nie zostaną usunięte.

Gdy tabela księgi jest odrzucana, usuwane są także jej zależne obiekty (tabela historii i widok księgi). Tabeli historycznej ani widoku rejestru nie można bezpośrednio upuścić. System wymusza semantykę miękkiego usuwania przy usuwaniu tabel rejestrowych i ich zależnych obiektów – nie są one faktycznie usuwane, lecz oznaczane jako porzucone w widokach katalogu systemu i przemianowane. Więcej informacji można znaleźć w artykule Rozważania i ograniczenia dotyczące rejestru.

Ważne

DROP TABLE CREATE TABLE i nie powinno być wykonywane na tym samym stole w tej samej partii. W przeciwnym razie może wystąpić nieoczekiwany błąd.

W bazie danych Fabric SQL usunięcie tabeli usuwa ją zarówno z bazy danych, jak i z Fabric OneLake. Wszystkie lustrzane dane dla usuniętej tabeli są usuwane.

Odroczona delokacja

Gdy tabela zostaje porzucona, a tabela lub jej indeksy mają 128 lub więcej zakresów, silnik bazy danych odkłada faktyczne deallokacje stron i powiązane blokady do momentu zatwierdzenia transakcji. Tabela i indeksy są rozstawiane w dwóch oddzielnych fazach: logicznej i fizycznej. W fazie logicznej istniejące jednostki alokacji są oznaczane do delokacji i blokowane do czasu zatwierdzenia transakcji. W fazie fizycznej proces w tle usuwa strony oznaczone do deallocation. Oznacza to, że przestrzeń uwolniona przez może DROP TABLE nie być od razu dostępna na nowe przydziały.

Jeśli przyspieszone odzyskiwanie bazy danych jest włączone, stosuje się oddzielne fazy logiczne i fizyczne, niezależnie od liczby zakresów.

Permissions

Wymaga ALTER zgody na schemat, do którego należy tabela, CONTROL uprawnień do tabeli lub członkostwa w stałej roli bazy db_ddladmin danych.

Jeśli wyciąg upuszcza tabelę księgową, wymagane jest pozwolenie ALTER LEDGER .

Przykłady

A. Usunięcie tabeli w aktualnej bazie danych

Poniższy przykład usuwa tabelę ProductVendor1 oraz jej dane i indeksy z bieżącej bazy danych.

DROP TABLE ProductVendor1;

B. Wrzucenie tabeli do innej bazy danych

Poniższy przykład popada tabelę SalesPerson2AdventureWorks2025 w bazie danych. Przykład można wykonać z dowolnej bazy danych na instancji serwera.

DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;

C. Zrzucanie tymczasowego stołu

Poniższy przykład tworzy tabelę tymczasową, testuje jej istnienie, porzuca ją i ponownie testuje jej istnienie, próbując wykonać SELECT polecenie, które kończy się niepowodzeniem. Ten przykład nie wykorzystuje składni IF EXISTS dostępnej od SQL Server 2016 (13.x).

CREATE TABLE #temptable (col1 int);

INSERT INTO #temptable
VALUES (10);

SELECT col1 FROM #temptable;

IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL
  DROP TABLE #temptable;

SELECT col1 FROM #temptable;

D. Upuszczenie tabeli za pomocą IF EXISTS

Dotyczy do: SQL Server (SQL Server 2016 (13.x) do obecnej wersji).

Poniższy przykład tworzy tabelę o nazwie T1. Potem druga deklaracja przewraca tabelę. Trzecie polecenie nie wykonuje żadnej akcji, ponieważ tabela została już upuszczona, jednak nie powoduje błędu.

CREATE TABLE T1 (Col1 int);

DROP TABLE T1;

DROP TABLE IF EXISTS T1;