SQL SERVER中查詢某個表或某個索引是否存在

2021-09-07 08:00:10 字數 904 閱讀 4244

查詢某個表是否存在:

在實際應用中可能需要刪除某個表,在刪除之前最好先判斷一下此表是否存在,以防止返回錯誤資訊。在sql server中可通過以下語句實現:

if object_id(n'表名稱', n'u') is not null 

drop table 表名稱;

注意,普通表和臨時表的使用差別:

若希望刪除test庫中的dbo.testtable表,直接將dbo.testtable作為表名即可。

若希望刪除臨時表dbo.#temp_table,需要以tempdb.dbo.#temp_table作為表名。

查詢表上的某個索引是否存在:

通常情況下,為了提高資料的查詢效率,我們會為表的特定字段建立索引,同乙個表上的索引名稱是不同的。那麼如何判斷某個表是否已經存在特定名稱的索引了呢?可通過下面的語句判斷:

select 1 from sys.indexes where object_id=object_id(@tname, n'u') and name=@iname

其中:@tname表示建索引的表名,@iname表示索引名。

擴充套件知識

在每乙個資料庫中都有sys.sysobjects用於包括在資料庫中建立的每個物件(例如約束、預設值、日誌、規則以及儲存過程)。詳細的說明資訊參看msdn上的幫助文件:sys.sysobjects

object_id的作用是返回架構範圍內物件的資料庫物件標識號。如果找不到資料庫或物件的名稱,例如相應名稱不存在或拼寫不正確,則會返回null。詳細的說明資訊參看msdn上的幫助文件:object_id

sys.indexes用於儲存每個**物件(例如,表、檢視或表值函式)的索引或堆,詳細的說明資訊參看msdn上的幫助文件:sys.indexes

sql server 查詢某個表的所有觸發器名稱

查出所有用到某個表的sql select from sysobjects where xtype tr select from sysobjects where xtype tr and parent obj object id 表名 xtype char 2 物件型別。可以是下列物件型別中的一種 ...

sql server 查詢某個表的所有觸發器名稱

查出所有用到某個表的sql select from sysobjects where xtype tr select from sysobjects where xtype tr and parent obj object id 表名 xtype char 2 物件型別。可以是下列物件型別中的一種 ...

sqlserver查詢出某個表當前自增字段的最新值

通常我們在設計表的時候,會加乙個排序字段,為的是方便資料的排序,比如上移 下移。如果在給資料表插入資料的時候,想要使這個欄位的預設值跟資料庫的主鍵 主鍵是自增長 一致的話,該怎麼弄呢?先插入,然後取出剛剛插入的資料的主鍵,然後對這行資料更新,將排序的值更新為主鍵的值?理論上這樣做也能實現,但是如果併...