簡體   English   中英

在SQL Server中檢查表是否存在的正確方法是什么?

[英]What is the correct way to check for the existence of a table in SQL Server?

我在使用較舊的數據庫創建腳本時遇到問題。 我想知道它是否與確定某些對象的存在方式有關。

對於表,該行是

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tablename]' AND type in (N'U'))
BEGIN
Create table...
END

在查看sys.objects之后,這似乎是錯誤的,我認為它永遠不會在那里。 這是錯誤嗎? 如果是這樣,哪種更好的書寫方式?

我通常使用

IF OBJECT_ID('dbo.TableName') IS NULL 

  CREATE Table dbo.TableName 
  ....... 


GO

或者您可以做類似...的事情。

IF OBJECT_ID('dbo.TableName') IS NOT NULL 
  DROP TABLE dbo.TableName 
GO

  CREATE Table dbo.TableName 
  .......     
GO

OBJECT_ID()函數還需要第二個(可選)參數,它是對象類型,對於用戶定義的表,您可以使用U ,例如...。

IF OBJECT_ID('dbo.TableName' , 'U') IS NULL 

  CREATE Table dbo.TableName 
  ....... 


GO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM