Bagikan melalui


TABEL DROP (Transact-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)Warehouse di Microsoft Fabric

Menghapus satu atau beberapa definisi tabel dan semua data, indeks, pemicu, batasan, dan spesifikasi izin untuk tabel tersebut. Setiap tampilan atau prosedur tersimpan yang mereferensikan tabel yang dihilangkan harus dihilangkan secara eksplisit dengan menggunakan DROP VIEW atau DROP PROCEDURE. Untuk melaporkan dependensi pada tabel, gunakan sys.dm_sql_referencing_entities.

Konvensi sintaks transact-SQL

Sintaks

-- 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 }
[;]

Argumen

database_name

Adalah nama database tempat tabel dibuat.

Azure SQL Database mendukung format database_name.schema_name.object_name nama tiga bagian ketika database_name database saat ini atau database_name adalah tempdb dan object_name dimulai dengan # atau ##. Azure SQL Database tidak mendukung nama empat bagian.

JIKA ADA

Berlaku untuk: SQL Server (SQL Server 2016 (13.x) melalui versi saat ini).

Secara kondisional menghilangkan tabel hanya jika sudah ada.

schema_name

Adalah nama skema tempat tabel berada.

table_name

Adalah nama tabel yang akan dihapus.

Keterangan

DROP TABLE tidak dapat digunakan untuk menjatuhkan tabel yang direferensikan oleh FOREIGN KEY batasan. Batasan referensi FOREIGN KEY atau tabel referensi harus dihilangkan terlebih dahulu.

Beberapa tabel dapat dijatuhkan dalam pernyataan yang sama DROP TABLE . Jika tabel referensi dalam FOREIGN KEY batasan dan tabel dengan kunci primer atau unik yang direferensikan dihilangkan dalam pernyataan yang sama DROP TABLE , tabel referensi harus dicantumkan terlebih dahulu.

Saat tabel dihilangkan, aturan atau default pada tabel kehilangan pengikatannya, dan batasan atau pemicu apa pun yang terkait dengan tabel secara otomatis dihilangkan. Jika Anda membuat ulang tabel, Anda harus menggabungkan kembali aturan dan default yang sesuai, membuat ulang pemicu apa pun, dan menambahkan semua batasan yang diperlukan.

Jika Anda menghapus semua baris dalam tabel dengan menggunakan DELETE pernyataan atau menggunakan TRUNCATE TABLE pernyataan, definisi tabel ada hingga dihapus menggunakan DROP TABLE.

Jika Anda menghapus tabel yang berisi varbinary(max) kolom dengan FILESTREAM atribut, data apa pun yang disimpan dalam sistem file tidak akan dihapus.

Saat tabel ledger dihilangkan, objek dependennya (tabel riwayat dan tampilan ledger) juga dihilangkan. Tabel riwayat atau tampilan buku besar tidak dapat dihilangkan secara langsung. Sistem ini memberlakukan semantik penghapusan sementara saat menjatuhkan tabel buku besar dan objek dependennya – mereka tidak benar-benar dihilangkan, tetapi sebaliknya ditandai sebagai dijatuhkan dalam tampilan katalog sistem dan diganti namanya. Untuk informasi selengkapnya, lihat Pertimbangan dan batasan Ledger.

Penting

DROP TABLE dan CREATE TABLE tidak boleh dieksekusi pada tabel yang sama dalam batch yang sama. Jika tidak, kesalahan tak terduga dapat terjadi.

Dalam database Fabric SQL, menjatuhkan tabel akan menjatuhkannya baik dari database maupun dari Fabric OneLake. Semua data cermin untuk tabel yang dihapus dihapus.

Dealokasi yang ditangguhkan

Ketika tabel dihapus, dan tabel atau indeksnya memiliki 128 jangkauan atau lebih, Mesin Database menunda pembatalan halaman yang sebenarnya, dan kunci terkait, hingga setelah transaksi dilakukan. Tabel dan indeks dijatuhkan dalam dua fase terpisah: logis dan fisik. Pada fase logis, unit alokasi yang ada ditandai untuk dealokasi dan dikunci hingga transaksi dilakukan. Dalam fase fisik, proses latar belakang menghapus halaman yang ditandai untuk pembatalan alokasi. Ini berarti bahwa ruang yang dirilis oleh DROP TABLE mungkin tidak segera tersedia untuk alokasi baru.

Jika pemulihan database yang dipercepat diaktifkan, fase logis dan fisik terpisah digunakan terlepas dari jumlah jangkauannya.

Izin

Memerlukan ALTER izin pada skema tempat tabel berada, CONTROL izin pada tabel, atau keanggotaan dalam db_ddladmin peran database tetap.

Jika pernyataan menghapus tabel buku besar, izin diperlukan.ALTER LEDGER

Contoh

J. Menjatuhkan tabel di database saat ini

Contoh berikut menghapus ProductVendor1 tabel beserta data dan indeksnya dari database saat ini.

DROP TABLE ProductVendor1;

B. Menjatuhkan tabel di database lain

Contoh berikut menghilangkan SalesPerson2 tabel dalam AdventureWorks2025 database. Contoh dapat dijalankan dari database apa pun pada instans server.

DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;

C. Menjatuhkan tabel sementara

Contoh berikut membuat tabel sementara, menguji keberadaannya, menghapusnya, dan menguji lagi keberadaannya dengan mencoba mengeksekusi SELECT pernyataan, yang gagal. Contoh ini tidak menggunakan IF EXISTS sintaks yang tersedia dimulai dengan 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. Menjatuhkan tabel menggunakan IF EXISTS

Berlaku untuk: SQL Server (SQL Server 2016 (13.x) melalui versi saat ini).

Contoh berikut membuat tabel bernama T1. Kemudian pernyataan kedua menjatuhkan tabel. Pernyataan ketiga tidak melakukan tindakan karena tabel sudah dihilangkan, namun tidak menyebabkan kesalahan.

CREATE TABLE T1 (Col1 int);

DROP TABLE T1;

DROP TABLE IF EXISTS T1;