mssql sqlserver if exists 用法大匯總



摘要:
下文講述sqlserver中,更新腳本中常用if exists關鍵字的用法說明,如下所示:
實驗環境:sql server 2008 R2


 
一、檢測數據庫是否存在於當前數據庫引擎下
 

if exists (select * from sys.databases where name = ’數據庫名稱’)
begin
print '數據庫名稱--存在' 
end 

二、檢測數據表是否存在於指定數據庫下

 if exists (select * from sysobjects where id = object_id(N’[數據表名稱]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1) 
begin
print '數據表名稱---存在'
end

三、檢測存儲過程是否存在的方法

 

if exists (select * from sysobjects where id = object_id(N’[存儲過程名稱]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1) 
begin
print '存儲過程名稱-存在' 
end

四、臨時表是否存在的方法

if object_id(’tempdb..#臨時表名’) is not null 
begin
print '臨時表名--存在'
end

五、視圖是否存在的方法

 IF EXISTS (SELECT * FROM sys.views WHERE object_id =[dbo].[視圖名稱]begin
print '視圖名稱存在'
end 

六、函數是否存在的檢測方法

if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[函數名稱]’) and xtype in (N’FN’, N’IF’, N’TF’)) 
begin
print '函數名稱--存在'
end

七、獲取用戶自定義對象信息

 

SELECT [name] as [對象名稱],
[id] as [對象編號],
crdate as [對象創建時間] 
FROM sysobjects 
where xtype=’U’ 
/*
xtype 參數類型,可輸以下值 
C = CHECK 約束 
D = 默認值或 DEFAULT 約束 
F = FOREIGN KEY 約束 
L = 日志 
FN = 標量函數 
IF = 內嵌表函數 
P = 存儲過程 
PK = PRIMARY KEY 約束(類型是 K) 
RF = 復制篩選存儲過程 
S = 系統表 
TF = 表函數 
TR = 觸發器 
U = 用戶表 
UQ = UNIQUE 約束(類型是 K) 
V = 視圖 
X = 擴展存儲過程 
*/

 

八、檢測數據列是否存在的方法

if exists(select * from syscolumns where id=object_id(’數據表名稱’) and name=’數據列’) 
begin
print '數據列---存在'
end 

 九、是否為自增列檢測

 

if columnproperty(object_id(’table’),’列名’,’IsIdentity’)=1 
begin
print 'table下“列名”為自增列'
end

 

 十、檢測數據表中是否存在索引

 

if columnproperty(object_id(’table’),’列名’,’IsIdentity’)=1 
begin
print 'table下“列名”為自增列'
end

 

 

 轉自:http://www.maomao365.com/?p=9094


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM