sqlserver中判斷表是否存在

在sqlserver(應該說在目前所有數據庫產品)中創建一個資源如表,視圖,存儲過程中都要判斷與創建的資源是否已經存在
在sqlserver中一般可通過查詢sys.objects系統表來得知結果,不過可以有更方便的方法
如下:
    if   object_id('tb_table') is not null 
        print 'exist'
    else
        print'not exist'
如上,可用object_id()來快速達到相同的目的,tb_table就是我將要創建的資源的名稱,所以要先判斷當前數據庫中不存在相同的資源
object_id()可接受兩個參數,第一個如上所示,代表資源的名稱,上面的就是表的名字,但往往我們要說明我們所要創建的是什麼類型的資源,
這樣sql可以明確地在一種類型的資源中查找是否有重複的名字,如下:
    if   object_id('tb_table','u') is not null 
        print 'exist'
    else
        print'not exist'

第二個參數 "u" 就表示tb_table是用戶創建的表,即:USER_TABLE地首字母簡寫
查詢sys.objects中可得到各種資源的類型名稱(TYPE列),這裏之舉幾個主要的例子
u  -----------  用戶創建的表,區別於系統表(USER_TABLE)
s  -----------  系統表(SYSTEM_TABLE)
v  -----------  視圖(VIEW)
p  -----------  存儲過程(SQL_STORED_PROCEDURE)
可使用select distinct type ,type_desc from sys.objects 獲得全部信息


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/fulianglove/archive/2008/08/07/2783381.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章