Bagaimana cara menentukan jika ada tabel di database SQL Server di SQL Server 2008?


13

Bagaimana cara menentukan jika ada tabel di database SQL Server di SQL Server 2008?

Jawaban:


18

Jika Anda kueri tabel sysobjects, dengan kueri seperti

SELECT * FROM sysobjects WHERE xtype = 'U' AND name = 'yourTableName'

xtype = 'U' adalah tabel pengguna

Anda kemudian dapat membungkus ini adalah pernyataan JIKA ADA

IF EXISTS (SELECT * FROM sysobjects ...)
BEGIN
    ' do your stuff here if it exists
END 

5
+1 Penting untuk dicatat bahwa Microsoft telah memindahkan fungsionalitas seperti ini ke Dynamic Management Views (DMVs) sejak SQL Server 2005. Ini secara teknis akan berfungsi, tetapi Microsoft sekarang merekomendasikan untuk menggunakan sys.tables DMV untuk ini. JIKA ADA (SELECT * FROM sys.tables WHERE type = 'U' AND name = 'yourTableName'). Secara fungsional, pernyataan Anda dan pernyataan saya melakukan hal yang persis sama. Hanya ingin menyebutkan DMV. Untuk mempelajari lebih lanjut tentang DMV, lihat dokumentasi msdn.microsoft.com/en-US/library/ms188754%28v=SQL.105%29.aspx
Matt M

Itu panggilan yang bagus, Matt. Kebiasaan lama sulit :-) Milikmu adalah cara yang lebih baik.
Miles D

1
Saya tidak yakin apakah itu membuat banyak perbedaan, tetapi saya lebih suka JIKA ADA (SELECT 1 FROM sys.tables ...)
David Hayes

@ Davidviday Ya, saya kira solusi ini lebih cepat karena tidak meminta untuk menemukan nama kolom.
Xriuk

12

Berikut ini satu cara lagi untuk menemukannya

IF OBJECT_ID('tablename') IS NULL
PRINT 'Table Does not Exist'

Bagus dan sederhana, tidak perlu kueri tabel sistem yang kompleks. Terima kasih!
Shadow9

2
Bukankah itu mendeteksi, misalnya, tampilan dengan nama yang sama? Mungkin prosedur yang tersimpan dan juga?
MarioDS

Tidak jika skema Anda memenuhi syarat objek.
Grant Fritchey

1
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
           WHERE TABLE_NAME = 'your table name here')
BEGIN
  PRINT 'Table Exists'
END
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.