Share via


DROP TABLE (Transact-SQL)

移除一個或多個資料表定義及這些資料表的所有資料、索引、觸發程序、條件約束和權限規格。 對於參考卸除的資料表之任何檢視或預存程序,您必須利用 DROP VIEWDROP PROCEDURE 來明確卸除它們。 若要報告對資料表的相依性,請使用 sys.dm_sql_referencing_entities

語法

DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]
        table_name [ ,...n ] [ ; ]

引數

  • database_name
    這是建立資料表的資料庫名稱。

  • schema_name
    這是資料表所屬的結構描述名稱。

  • table_name
    這是要移除的資料表名稱。

備註

您無法利用 DROP TABLE 來卸除 FOREIGN KEY 條件約束所參考的資料表。 您必須先卸除參考 FOREIGN KEY 條件約束或參考資料表。 如果參考資料表和持有要卸除的主索引鍵之資料表在相同的 DROP TABLE 陳述式中,就必須先列出參考資料表。

您可以在任何資料庫中卸除多份資料表。 如果卸除的資料表參考另一份也要卸除的資料表之主索引鍵,含有外部索引鍵的參考資料表必須列在持有被參考的主索引鍵之資料表前面。

當卸除資料表時,資料表的規則或預設值會失去它們的繫結,資料表的任何相關條件約束或觸發程序也都會自動卸除。 如果重新建立資料表,您必須重新繫結適當的規則和預設值、重新建立任何觸發程序,以及加入所有必要的條件約束。

如果您利用 DELETE tablename 或 TRUNCATE TABLE 陳述式來刪除資料表中的所有資料列,資料表會持續存在,直到將它卸除為止。

使用超出 128 個範圍的大型資料表和索引會分成邏輯和實體這兩個分開的階段來卸除。 在邏輯階段中,資料表所用的現有配置單位會標示成取消配置和鎖定,直到認可交易為止。 在實體階段中,會以批次方式來實際卸除標示成取消配置的 IAM 頁面。

如果卸除的資料表包含具有 FILESTREAM 屬性的 VARBINARY(MAX) 資料行,則儲存在檔案系統中的任何資料都不會遭到移除。

重要事項重要事項

DROP TABLE 和 CREATE TABLE 不得在相同批次的相同資料表上執行。 否則,系統可能會發生非預期的錯誤。

權限

需要資料表所屬結構描述的 ALTER 權限、資料表的 CONTROL 權限,或 db_ddladmin 固定資料庫角色成員資格。

範例

A.卸除目前資料庫中的資料表

下列範例會從目前資料庫移除 ProductVendor1 資料表及其資料和索引。

DROP TABLE ProductVendor1 ;

B.卸除另一個資料庫中的資料表

下列範例會卸除 AdventureWorks2012 資料庫中的 SalesPerson2 資料表。 您可以從伺服器執行個體的任何資料庫中執行這個範例。

DROP TABLE AdventureWorks2012.dbo.SalesPerson2 ;

C.卸除暫存資料表

下列範例會建立一份暫存資料表、測試它是否存在、卸除它,再重新測試它是否存在。

USE AdventureWorks2012;
GO
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;

請參閱

參考

ALTER TABLE (Transact-SQL)

CREATE TABLE (Transact-SQL)

DELETE (Transact-SQL)

sp_help (Transact-SQL)

sp_spaceused (Transact-SQL)

TRUNCATE TABLE (Transact-SQL)

DROP VIEW (Transact-SQL)

DROP PROCEDURE (Transact-SQL)

EVENTDATA (Transact-SQL)

sys.sql_expression_dependencies (Transact-SQL)