SQL Server判斷數(shù)據(jù)庫、表、列、視圖、存儲(chǔ)過程、函數(shù)是否存在總結(jié)
一、前言概述
在寫一些業(yè)務(wù)邏輯相對(duì)復(fù)雜點(diǎn)的存儲(chǔ)過程的時(shí)候,經(jīng)常會(huì)用到臨時(shí)表或者數(shù)據(jù)表作為臨時(shí)結(jié)果的保存。但每次在作表是否存在的判斷時(shí),往往想不起完整的SQL寫法。因此,記錄一些常用的數(shù)據(jù)庫對(duì)象是否存在的判斷方法,可以達(dá)到快速查找的目的。正是:好記性不如爛筆頭。
二、數(shù)據(jù)庫相關(guān)的判斷
2.1、判斷數(shù)據(jù)庫是否存在
IF EXISTS (SELECT * FROM sys.databases WHERE NAME='TEST') PRINT '數(shù)據(jù)庫TEST存在' ELSE PRINT '數(shù)據(jù)庫TEST不存在'
三、數(shù)據(jù)表相關(guān)的判斷
3.1、判斷數(shù)據(jù)表是否存在
--方法一 IF OBJECT_ID(N'[dbo].[PRODUCT]',N'U') IS NOT NULL PRINT '數(shù)據(jù)表PRODUCT存在' ELSE PRINT '數(shù)據(jù)表PRODUCT不存在' --方法二 IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND XTYPE='U') PRINT '數(shù)據(jù)表PRODUCT存在' ELSE PRINT '數(shù)據(jù)表PRODUCT不存在' --方法三 IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND OBJECTPROPERTY(ID,N'IsUserTable')=1) PRINT '數(shù)據(jù)表PRODUCT存在' ELSE PRINT '數(shù)據(jù)表PRODUCT不存在'
3.2、判斷臨時(shí)表是否存在
--方法一 IF OBJECT_ID(N'tempdb..#PRODUCT',N'U') IS NOT NULL PRINT '臨時(shí)表#PRODUCT存在' ELSE PRINT '臨時(shí)表#PRODUCT不存在' --方法二 IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE ID=OBJECT_ID(N'tempdb..#PRODUCT') AND XTYPE='U') PRINT '臨時(shí)表#PRODUCT存在' ELSE PRINT '臨時(shí)表#PRODUCT不存在'
3.3、判斷表是否存在某列
--方法一 IF COL_LENGTH(N'[dbo].[PRODUCT]','PRD_ID') IS NOT NULL PRINT '表PRODUCT存在列PRD_ID' ELSE PRINT '表PRODUCT不存在列PRD_ID' --方法二 IF EXISTS (SELECT * FROM syscolumns WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND NAME='PRD_ID') PRINT '表PRODUCT存在列PRD_ID' ELSE PRINT '表PRODUCT不存在列PRD_ID' --方法三 IF EXISTS (SELECT * FROM sysobjects A INNER JOIN syscolumns B ON A.ID=B.ID WHERE A.XTYPE='U' AND A.NAME='PRODUCT' AND B.NAME='PRD_ID') PRINT '表PRODUCT存在列PRD_ID' ELSE PRINT '表PRODUCT不存在列PRD_ID'
3.4、判斷列是否自增列
IF COLUMNPROPERTY(OBJECT_ID(N'[dbo].[PRODUCT]'),'PRD_ID','ISIDENTITY')=1 PRINT '表PRODUCT列PRD_ID是自增列' ELSE PRINT '表PRODUCT列PRD_ID不是自增列'
3.5、判斷表中是否存在索引
IF EXISTS(SELECT * FROM SYSINDEXES WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND NAME='PK_PRODUCTS') PRINT '表PRODUCT存在索引PK_PRODUCTS' ELSE PRINT '表PRODUCT不存在索引PK_PRODUCTS'
四、視圖相關(guān)的判斷
4.1、判斷視圖是否存在
--方法一 IF OBJECT_ID(N'[dbo].[BRC_1001]','V') IS NOT NULL PRINT '視圖BRC_1001存在' ELSE PRINT '視圖BRC_1001不存在' --方法二 IF EXISTS (SELECT * FROM sysobjects where id=OBJECT_ID(N'[dbo].[BRC_1001]') and OBJECTPROPERTY(ID,N'IsView')=1) PRINT '視圖BRC_1001存在' ELSE PRINT '視圖BRC_1001不存在' --方法三 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME=N'BRC_1001') PRINT '視圖BRC_1001存在' ELSE PRINT '視圖BRC_1001不存在'
五、存儲(chǔ)過程相關(guān)的判斷
5.1、判斷存儲(chǔ)過程是否存在
--方法一 IF OBJECT_ID(N'[dbo].[BRC_BomCost]','P') IS NOT NULL PRINT '存儲(chǔ)過程BRC_BomCost存在' ELSE PRINT '存儲(chǔ)過程BRC_BomCost不存在' --方法二 IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[BRC_BomCost]') AND OBJECTPROPERTY(ID,N'IsProcedure')=1) PRINT '存儲(chǔ)過程BRC_BomCost存在' ELSE PRINT '存儲(chǔ)過程BRC_BomCost不存在'
六、函數(shù)相關(guān)的判斷
6.1、判斷函數(shù)是否存在
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[BRC_MLTotal]') AND XTYPE IN (N'FN',N'IF',N'TF')) PRINT '函數(shù)BRC_MLTotal存在' ELSE PRINT '函數(shù)BRC_MLTotal不存在'
到此這篇關(guān)于SQL Server判斷數(shù)據(jù)庫、表、列、視圖、存儲(chǔ)過程、函數(shù)是否存在的文章就介紹到這了,更多相關(guān)sqlserver判斷視圖函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server誤區(qū)30日談 第10天 數(shù)據(jù)庫鏡像在故障發(fā)生后 馬上就能發(fā)現(xiàn)
市面上大肆宣傳數(shù)據(jù)庫鏡像技術(shù)可以在故障發(fā)生后,立即檢測(cè)到錯(cuò)誤并進(jìn)行故障轉(zhuǎn)移2013-01-01SQL Server 2008 R2數(shù)據(jù)庫遷移的實(shí)現(xiàn)方法
這篇文章給大家介紹了SQL Server 2008 R2數(shù)據(jù)庫遷移的兩種方案簡(jiǎn)要指南,文章通過圖文結(jié)合介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的小伙伴跟著小編一起來看看吧2024-01-01SQL將一個(gè)表中的數(shù)據(jù)插入到另一個(gè)表中的方法
這篇文章介紹了SQL將一個(gè)表中的數(shù)據(jù)插入到另一個(gè)表中的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02用戶"sa"登陸失敗 SQLServer 錯(cuò)誤18456的解決方法
sqlserver下用sa登錄提示18456錯(cuò)誤的解決方法。2009-11-11SQL?Server中元數(shù)據(jù)函數(shù)的用法
這篇文章介紹了SQL?Server中元數(shù)據(jù)函數(shù)的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05SQL學(xué)習(xí)筆記七函數(shù) 數(shù)字,日期,類型轉(zhuǎn)換,空值處理,case
SQL學(xué)習(xí)筆記七函數(shù) 數(shù)字,日期,類型轉(zhuǎn)換,空值處理,case 使用說明2011-08-08SQL語句執(zhí)行超時(shí)引發(fā)網(wǎng)站首頁訪問故障問題
由于獲取網(wǎng)站首頁列表的 SQL 語句出現(xiàn)突發(fā)的查詢超時(shí)問題,造成訪問網(wǎng)站首頁時(shí)出現(xiàn) 500 錯(cuò)誤,在故障期間記錄了大量錯(cuò)誤,小編給大家分享到腳本之家平臺(tái),感興趣的朋友一起看看吧2020-02-02SQL Server創(chuàng)建數(shù)據(jù)庫圖文教程
這篇文章主要介紹了SQL Server創(chuàng)建數(shù)據(jù)庫圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02數(shù)據(jù)庫中兩張表之間的數(shù)據(jù)同步增加、刪除與更新實(shí)現(xiàn)思路
可以采用分別創(chuàng)建增加、刪除、更新的觸發(fā)器(Trigger)來達(dá)到兩張表之間數(shù)據(jù)同步的目的,感興趣的朋友可以參考下,希望可以幫助到你2013-03-03