ฉันจะตรวจสอบได้อย่างไรว่ามีตารางอยู่ในฐานข้อมูล SQL Server ใน SQL Server 2008 หรือไม่


13

ฉันจะตรวจสอบได้อย่างไรว่ามีตารางอยู่ในฐานข้อมูล SQL Server ใน SQL Server 2008 หรือไม่

คำตอบ:


18

หากคุณสอบถามตาราง sysobjects ด้วยข้อความค้นหาที่ต้องการ

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

xtype = 'U' เป็นตารางผู้ใช้

จากนั้นคุณสามารถสรุปได้ว่านี่เป็นคำสั่ง IF EXISTS

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

5
+1 สิ่งสำคัญคือให้สังเกตว่า Microsoft ได้ย้ายฟังก์ชันการทำงานเช่นนี้ไปยัง Dynamic Management Views (DMVs) ตั้งแต่ SQL Server 2005 ซึ่งจะใช้งานได้ในทางเทคนิค แต่ Microsoft แนะนำให้ใช้ sys.tables DMV สำหรับสิ่งนี้ IF EXISTS (เลือก * จาก sys.tables WHERE type = 'U' และ name = 'yourTableName') ฟังก์ชั่นคำสั่งของคุณและคำสั่งของฉันทำสิ่งเดียวกัน แค่อยากจะพูดถึง DMVs หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ DMV โปรดดูเอกสารประกอบmsdn.microsoft.com/en-US/library/ms188754%28v=SQL.105%29.aspx
Matt M

นั่นเป็นแมตต์ที่ดี นิสัยเก่าตายยาก :-) คุณเป็นวิธีที่ดีกว่า
ไมล์ D

1
ฉันไม่แน่ใจว่ามันจะสร้างความแตกต่างมาก แต่ฉันชอบ IF EXISTS (เลือก 1 จาก sys.tables ... )
David Hayes

@DavidHayes ใช่ฉันเดาว่าโซลูชันนี้เร็วกว่าเพราะไม่ต้องค้นหาชื่อคอลัมน์
Xriuk

12

นี่คืออีกวิธีในการค้นหา

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

สวยและเรียบง่ายไม่จำเป็นต้องค้นหาตารางระบบที่ซับซ้อน ขอบคุณ!
Shadow Wizard คือหูสำหรับคุณ

2
ตัวอย่างนั้นจะไม่ตรวจจับว่ามีการดูชื่อเดียวกันหรือไม่ บางทีขั้นตอนการจัดเก็บและเช่นกัน?
MarioDS

ไม่ใช่ถ้าคุณคีมามีคุณสมบัติของวัตถุ
Grant Fritchey

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.