首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

判斷暫存表是否存在的新寫法:OBJECT_ID 函數應用

     編輯:關於SqlServer

傳統寫法

IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE name LIKE '#temp%')
    DROP TABLE #temp;

新寫法:使用 OBJECT_ID

IF OBJECT_ID('tempdb..#temp') IS NOT NULL
    DROP TABLE #temp;

原理

OBJECT_ID('database..object_name') 回傳物件識別碼,不存在則回傳 NULL。對暫存表必須指定 tempdb.. 前綴。

舉一反三:判斷正式表是否存在

IF EXISTS (
    SELECT * FROM sysobjects 
    WHERE OBJECTPROPERTY(object_id('PerPersonData'), 'IsUserTable') = 1
)
-- 或簡寫
IF OBJECT_ID('PerPersonData', 'U') IS NOT NULL

OBJECTPROPERTY(id, 'IsUserTable') 回傳 1 表示使用者表;'U' 為物件類型代碼(User Table)。

其他實用 OBJECTPROPERTY 參數

  • IsProcedure:預存程序
  • IsView:檢視表
  • IsTrigger:觸發程序
  • IsIndexed:是否有索引

結語

OBJECT_ID 簡潔高效,建議取代傳統 sysobjects 查詢,提升腳本可讀效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved