Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

4 Cara untuk Memeriksa Apakah Tabel Ada Sebelum Menjatuhkannya di SQL Server (T-SQL)

Menjatuhkan tabel dalam SQL dengan mudah. Anda cukup menggunakan DROP TABLE myTable di mana myTable adalah nama tabel yang ingin Anda jatuhkan. Anda dapat menggunakan metode ini untuk meletakkan tabel di SQL Server melalui skrip T-SQL.

Tetapi Anda akan mendapatkan kesalahan jika tabel tidak benar-benar ada. Yaitu, kecuali Anda memeriksa keberadaan tabel terlebih dahulu.

Berikut adalah empat cara menggunakan T-SQL untuk memeriksa apakah tabel sudah ada sebelum dihapus.

Opsi 1:IF EXISTS Klausa

Saat menggunakan SQL Server 2016 atau yang lebih baru, kita dapat menggunakan IF EXISTS klausa dari DROP TABLE pernyataan untuk memeriksa keberadaan tabel sebelum kita mencoba menjatuhkannya:

DROP TABLE IF EXISTS t1;

Ini menjatuhkan tabel bernama t1 jika ada.

Inilah hasil menjalankan pernyataan di atas ketika tabel memang ada (dan karena itu dihapus):

Commands completed successfully.

Dan inilah yang kami dapatkan jika kami segera menjalankan pernyataan lagi (yaitu ketika tabel tidak ada):

Commands completed successfully.

Keluaran yang sama. Jadi pernyataan berjalan dengan sukses apakah tabel ada atau tidak.

Inilah yang terjadi jika kita mencoba menjatuhkan tabel tanpa menggunakan IF EXISTS klausa:

DROP TABLE t1;

Hasil:

Msg 3701, Level 11, State 5, Line 1
Cannot drop the table 't1', because it does not exist or you do not have permission.

Opsi 2:Periksa ID Objek

Sebagai alternatif, kita dapat menggunakan OBJECT_ID() fungsi untuk memeriksa keberadaan tabel sebelum kita mencoba untuk menjatuhkannya:

IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO

Contoh di atas memeriksa ID objek untuk dbo.t1 meja. Argumen kedua untuk OBJECT_ID() menentukan jenis objek yang kita cari. Dalam hal ini kami menggunakan U , yang untuk “tabel yang ditentukan pengguna”.

OBJECT_ID() mengembalikan nomor identifikasi objek database dari objek cakupan skema. Jika objek ada, itu tidak akan mengembalikan NULL, dan oleh karena itu, kita bisa menjatuhkan tabel. Jika objek tidak ada, atau jika Anda tidak memiliki akses ke sana, fungsi mengembalikan NULL, dan DROP TABLE pernyataan tidak akan berjalan.

Opsi 3:Kueri information_schema.tables

Cara lain untuk memeriksa apakah tabel sudah ada adalah dengan menanyakan information_schema.tables lihat:

IF EXISTS (
    SELECT * FROM information_schema.tables
    WHERE table_schema = 'dbo' AND table_name = 't1') 	
    DROP TABLE dbo.t1;

Itu melakukan hal yang mirip dengan contoh sebelumnya; ia memeriksa keberadaan tabel dan membuatnya hanya jika tidak ada.

Opsi 4:Kueri sys.tables

Kami juga dapat menanyakan sys.tables tampilan katalog sistem:

IF EXISTS (
    SELECT * FROM sys.tables t 
    JOIN sys.schemas s ON (t.schema_id = s.schema_id) 
    WHERE s.name = 'dbo' AND t.name = 't1') 	
    DROP TABLE dbo.t1;

SQL Server menyediakan banyak cara lain untuk memeriksa keberadaan tabel. Lihat 6 Cara untuk Memeriksa apakah Tabel Ada di SQL Server sebagai contoh.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Enkripsi Cadangan Basis Data SQL Server

  2. Apa itu Periksa Batasan di SQL Server - Tutorial SQL Server / TSQL Bagian 82

  3. Apa manfaat menggunakan SET XACT_ABORT ON dalam prosedur tersimpan?

  4. Temukan Entitas Referensi di SQL Server:sys.dm_sql_referencing_entities()

  5. Penyimpanan data terbaik untuk miliaran baris