表相關 普通表 查詢普通表是否存在可以使用object_id函數,下麵的例子是查詢表“t_test”是否存在之後從而進行其他的DLL操作: if object_id('t_test') is not null begin -- 如果表存在 這段裡面寫相關邏輯 select 1 end 臨時表 臨時表 ...
表相關
普通表
查詢普通表是否存在可以使用object_id函數,下麵的例子是查詢表“t_test”是否存在之後從而進行其他的DLL操作:
if object_id('t_test') is not null begin -- 如果表存在 這段裡面寫相關邏輯 select 1 end
臨時表
臨時表同樣可以用object_id但是表名要記得加上庫名和表空間:
if object_id('tempdb..#temp') is not null begin select 1 end
或者
if exists(select 1 from tempdb..sysobjects where name like '#temp%') begin -- 存在 #tempXXXX 表 select 1 end
以上這個條件自行發揮,我這邊使用的是like語句,判斷的是只要是#temp開頭的臨時表存在。
欄位
有一個很精簡的寫法,用COL_LENGTH函數,用法:COL_LENGTH('表名','欄位名')
if COL_LENGTH('d_test', 'col1') IS NULL begin -- 欄位在 d_test 存在 select 1 end
索引
索引這邊比較麻煩,但是也有辦法。
可以使用存過sp_helpindex
declare @index table ( index_name varchar(500), index_des varchar(5000), index_keys varchar(500) ) insert into @index exec sp_helpindex 't_test'
上面這段代碼是將t_test表索引、觸發器結構羅列出來放在定義的變數表@index中了。這時候我們查詢這個表會得到結果:
這樣查詢索引存不存在就好辦了
if not exists(select 1 from @index where index_name = 'idx_test') begin -- 索引存在 select 1 end