查詢某個表是否存在:
在實際應用中可能需要刪除某個表,在刪除之前最好先判斷一下此表是否存在,以防止返回錯誤資訊。在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查詢出某個表當前自增字段的最新值
通常我們在設計表的時候,會加乙個排序字段,為的是方便資料的排序,比如上移 下移。如果在給資料表插入資料的時候,想要使這個欄位的預設值跟資料庫的主鍵 主鍵是自增長 一致的話,該怎麼弄呢?先插入,然後取出剛剛插入的資料的主鍵,然後對這行資料更新,將排序的值更新為主鍵的值?理論上這樣做也能實現,但是如果併...