DROP TABLE (Transact-SQL)
Удаляет одно или больше определений таблиц и все данные, индексы, триггеры, ограничения и разрешения для этих таблиц. Любое представление или хранимая процедура, ссылающаяся на удаленную таблицу, должна быть явно удалена с помощью инструкции DROP VIEW или DROP PROCEDURE. Отчет о зависимостях в таблице можно получить из динамического административного представления sys.dm_sql_referencing_entities.
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Синтаксические обозначения в Transact-SQL
Синтаксис
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]
table_name [ ,...n ]
[ ; ]
Аргументы
database_name
Имя базы данных, в которой создана таблица.База данных SQL Windows Azure поддерживает формат трехкомпонентного имени database_name.[schema_name].object_name, если database_name — это текущая база данных или database_name — это tempdb и object_name начинается с символа «#». База данных SQL Windows Azure не поддерживает четырехкомпонентные имена.
schema_name
Имя схемы, которой принадлежит таблица.table_name
Имя таблицы, предназначенной для удаления.
Замечания
Инструкцию DROP TABLE нельзя использовать для удаления таблицы, на которую ссылается ограничение FOREIGN KEY. Сначала следует удалить ссылающееся ограничение FOREIGN KEY или ссылающуюся таблицу. Если и ссылающаяся таблица, и таблица, содержащая первичный ключ, удаляются с помощью одной инструкции DROP TABLE, ссылающаяся таблица должна быть первой в списке.
Несколько таблиц можно удалить из любой базы данных. Если удаляемая таблица ссылается на первичный ключ другой таблицы, которая также удаляется, ссылающаяся таблица с внешним ключом должна стоять в списке перед таблицей, содержащей указанный первичный ключ.
При удалении таблицы относящиеся к ней правила и значения по умолчанию теряют привязку, а любые связанные с таблицей ограничения или триггеры автоматически удаляются. Если таблица будет создана заново, нужно будет заново привязать все правила и значения по умолчанию, заново создать триггеры и добавить необходимые ограничения.
При удалении всех строк в таблице с помощью инструкции DELETE tablename или TRUNCATE TABLE таблица продолжает существовать, пока она не будет удалена.
Большие таблицы и индексы из более чем 128 экстентов удаляются в два этапа: логический и физический. На логическом этапе существующие единицы распределения, используемые в таблице, отмечаются для освобождения и остаются заблокированными до фиксации транзакции. На физическом этапе страницы IAM, отмеченные для освобождения, физически удаляются пакетами.
При удалении таблицы, которая содержит столбец VARBINARY(MAX) с атрибутом FILESTREAM, не будут удалены никакие данные, которые хранятся в файловой системе.
Важно! |
---|
Инструкции DROP TABLE и CREATE TABLE нельзя выполнять для одной таблицы в одном пакете.В противном случае может произойти непредвиденная ошибка. |
Разрешения
Требует разрешения на работу с ALTER в схеме, к которой принадлежит эта таблица, разрешения на работу с CONTROL для этой таблицы или членства в предопределенной роли базы данных db_ddladmin.
Примеры
А.Удаление таблицы из текущей базы данных
Следующий пример удаляет таблицу ProductVendor1, ее данные и индексы из текущей базы данных.
DROP TABLE ProductVendor1 ;
Б.Удаление таблицы из другой базы данных
Следующий пример удаляет таблицу SalesPerson2 из базы данных AdventureWorks2012 . Пример может быть выполнен из любой базы данных на экземпляре сервера.
DROP TABLE AdventureWorks2012.dbo.SalesPerson2 ;
В.Удаление временной таблицы
Следующий пример создает временную таблицу, проверяет ее наличие, удаляет ее и снова проверяет ее наличие.
CREATE TABLE #temptable (col1 int);
GO
INSERT INTO #temptable
VALUES (10);
GO
SELECT * FROM #temptable;
GO
IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL
DROP TABLE #temptable;
GO
--Test the drop.
SELECT * FROM #temptable;
См. также
Справочник
Представление каталога sys.sql_expression_dependencies (Transact-SQL)