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?

Amir Rezaei
sumber

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 
Miles D
sumber
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'
Pengembara
sumber
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
Divya Diya
sumber