SQL SERVER 中的 object_id()函數

SQLServer數據庫中,如果查詢數據庫中是否存在指定名稱的索引或者外鍵約束等,經常會用到object_id('name','type')方法,做筆記如下:

?

語法:object_id('objectname')或object('objectname','type')

作用:該函數會返回指定對象的ID值,可以在sysobjects表中進行驗證。

其中objectname數據類型爲 char 或 nchar。如果 object 的數據類型是 char,那麼隱性將其轉換成 nchar。

type如下列表:

V = View
U = Table (user-defined)
P = SQL Stored Procedure


AF = Aggregate function (CLR)
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
FN = SQL scalar function
FS = Assembly (CLR) scalar-function
FT = Assembly (CLR) table-valued function
IF = SQL inline table-valued function
IT = Internal table
PC = Assembly (CLR) stored-procedure
PG = Plan guide
PK = PRIMARY KEY constraint
R = Rule (old-style, stand-alone)
RF = Replication-filter-procedure
S = System base table
SN = Synonym
SQ = Service queue
TA = Assembly (CLR) DML trigger
TF = SQL table-valued-function
TR = SQL DML trigger
UQ = UNIQUE constraint
X = Extended stored procedure

例子如下:

select object_id('fk_xxx_xx','F')會取出約束名爲fk_xxx_xx的ID值,如返回144444444這個值。

上面的語句等同:

select ID from sysobjects where name='fk_xxx_xx' and type='F'

======================================================================================= 

大家都知道在數據庫中有一個系統表sysobjects,裏面存儲了數據庫各個對象的信息。可以查詢下看看結果。可以看出每個對象都有一個ID,這個表存儲了表,存儲過程,觸發器,視圖等相關信息。注意:字段沒有。

  object_id就是根據對象名稱返回該對象的id.
  object_name是根據對象id返回對象名稱.
 

  select object_id(對象名)等同於:
  select id from sysobjects where name=對象名

  select object_name(id號)等同於:
  select name from sysobjects where id=id號

======================================================================================= 

判斷臨時表

if object_id(N'tempdb..#ABC',N'U') is  null

if object_id(N'tempdb..#ABC',N'U') is  null


tempdb是SQL Server的系統數據庫一直都是SQLServer的重要組成部分,用來存儲臨時對象。可以簡單理解tempdb是SQLServer的速寫板。應用程序與數據庫都可以使用tempdb作爲臨時的數據存儲區。一個實例的所有用戶都共享一個Tempdb。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章