Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
хранилище платформы Аналитики Azure Synapse Analytics
(PDW)
в Microsoft Fabric
Удаляет одно или больше определений таблиц и все данные, индексы, триггеры, ограничения и разрешения для этих таблиц. Любое представление или хранимая процедура, ссылающаяся на удаленную таблицу, должна быть явно удалена с помощью инструкции DROP VIEW или DROP PROCEDURE. Отчет о зависимостях в таблице можно получить из представления sys.dm_sql_referencing_entities.
Соглашения о синтаксисе Transact-SQL
Синтаксис
-- 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 }
[;]
Аргументы
database_name
Имя базы данных, в которой создана таблица.
Azure SQL Database поддерживает трёхчастный формат database_name.schema_name.object_name имён, когда database_name это текущая база данных или database_name is tempdb и object_name начинается с # или ##. Azure SQL Database не поддерживает имена из четырёх частей.
ЕСЛИ СУЩЕСТВУЕТ
Применимо к: SQL Server (SQL Server 2016 (13.x) до текущей версии.
Условное удаление таблицы только в том случае, если она уже существует.
schema_name
Имя схемы, которой принадлежит таблица.
table_name
Имя таблицы, предназначенной для удаления.
Замечания
DROP TABLE нельзя использовать для удаления таблицы, на которую ссылается ограничение FOREIGN KEY . Сначала должно быть отброшено ограничение на ссылки FOREIGN KEY или таблицу ссылок.
В одном DROP TABLE и том же операторе можно сбросить несколько таблиц. Если и таблица ссылок в ограничении FOREIGN KEY , и таблица с первичным или уникальным ключом отбрасываются в одном и том DROP TABLE же операторе, таблица ссылок должна быть указана первой.
При удалении таблицы относящиеся к ней правила и значения по умолчанию теряют привязку, а любые связанные с таблицей ограничения или триггеры автоматически удаляются. Если таблица будет создана заново, нужно будет заново привязать все правила и значения по умолчанию, заново создать триггеры и добавить необходимые ограничения.
Если удалить все строки в таблице с помощью DELETE оператора или использовать его TRUNCATE TABLE , определение таблицы сохраняется до тех пор, пока оно не будет отброшено с помощью DROP TABLE.
Если вы уберёте таблицу, содержащую varbinary(max) столбец с атрибутом FILESTREAM , любые данные, хранящиеся в файловой системе, не удаляются.
При удалении таблицы реестра ее зависимые объекты (таблица журнала и представление реестра) также удаляются. Таблица истории или вид реестра нельзя отбросить напрямую. Система применяет мягкую семантику при удалении таблиц реестра и связанных с ними объектов — они фактически не удаляются, а помечаются как отброшенные в системных каталогах и переименованы. Дополнительные сведения см. в разделе Рекомендации и ограничения для реестра.
Внимание
DROP TABLE И CREATE TABLE не должны выполняться на одном столе в той же партии. В противном случае может произойти непредвиденная ошибка.
В Fabric SQL базе данных удаление таблицы приводит к удалению её как из базы данных, так и из Fabric OneLake. Все зеркальные данные для отброшенной таблицы удаляются.
Отложенное распределение
Когда таблица отпадает, а таблица или её индексы имеют 128 и более, движок базы данных откладывает фактические позиции размещения страниц и связанные с ними блокировки до момента фиксации транзакции. Таблица и индексы отбрасываются в две отдельные фазы: логическую и физическую. В логической фазе существующие единицы распределения помечаются для сделки и блокируются до момента коммита транзакции. На физической фазе фоновый процесс удаляет страницы, отмеченные как deallocation. Это означает, что освободившееся DROP TABLE пространство может сразу не быть доступно для новых выделений.
Если включено ускоренное восстановление базы данных , используются отдельные логические и физические фазы независимо от количества экстентов.
Разрешения
Требуется ALTER разрешение на схему, к которой принадлежит таблица, CONTROL разрешение на таблицу или членство в фиксированной db_ddladmin роли базы данных.
Если оператор сбрасывает таблицу реестра, требуется разрешение ALTER LEDGER .
Примеры
А. Удаление таблицы из текущей базы данных
Следующий пример удаляет таблицу ProductVendor1, ее данные и индексы из текущей базы данных.
DROP TABLE ProductVendor1;
B. Удаление таблицы из другой базы данных
Следующий пример удаляет таблицу SalesPerson2 из базы данных AdventureWorks2025. Пример может быть выполнен из любой базы данных на экземпляре сервера.
DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;
В. Удаление временной таблицы
Следующий пример создаёт временную таблицу, проверяет её существование, снимает её и снова проверяет на её существование, пытаясь выполнить SELECT оператор, который не удаётся. В этом примере не используется синтаксис IF EXISTS , который доступен начиная с 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. Удаление таблицы с помощью IF EXISTS
Применимо к: SQL Server (SQL Server 2016 (13.x) до текущей версии.
В следующем примере создается таблица с именем T1. Затем вторая инструкция удаляет таблицу. Третий оператор не выполняет никаких действий, потому что таблица уже отброшена, однако ошибка не возникает.
CREATE TABLE T1 (Col1 int);
DROP TABLE T1;
DROP TABLE IF EXISTS T1;