[英]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.