SQL SERVER OBJECTPROPERTY()函數的用法

OBJECTPROPERTY

返回當前數據庫中對象的有關信息。數據庫

語法

OBJECTPROPERTY id , property )緩存

參數

id架構

一個表達式,包含當前數據庫中某個對象的 ID。id 的數據類型是 intide

Property函數

一個表達式,包含針對由 id 指定的對象將要返回的信息。Property 能夠是下面這些值中的一個。測試


說明  除非加以註釋,不然,若是 property 是無效的屬性名,則返回 NULL。優化


屬性名稱 對象類型 描述和返回的值
CnstIsClustKey 約束 帶有彙集索引的主鍵。

1 = True
0 = Falseui

CnstIsColumn 約束 COLUMN 約束。

1 = True
0 = Falsespa

CnstIsDeleteCascade 約束 帶有 ON DELETE CASCADE 選項的外鍵約束。
CnstIsDisabled 約束 禁用的約束。

1 = True
0 = Falseorm

CnstIsNonclustKey 約束 帶有非彙集索引的主鍵。

1 = True
0 = False

CnstIsNotTrusted 約束 啓用約束時未檢查現有行,因此可能不是全部行都受約束的控制。

1 = True
0 = False

CnstIsNotRepl 約束 使用 NOT FOR REPLICATION 關鍵字定義約束。
CnstIsUpdateCascade 約束 帶有 ON UPDATE CASCADE 選項的外鍵約束。
ExecIsAfterTrigger 觸發器 AFTER 觸發器。
ExecIsAnsiNullsOn 過程、觸發器、視圖 建立時的 ANSI_NULLS 設置。

1 = True
0 = False

ExecIsDeleteTrigger 觸發器 DELETE 觸發器。

1 = True
0 = False

ExecIsFirstDeleteTrigger 觸發器 對錶執行 DELETE 時觸發的第一個觸發器。
ExecIsFirstInsertTrigger 觸發器 對錶執行 INSERT 時觸發的第一個觸發器。
ExecIsFirstUpdateTrigger 觸發器 對錶執行 UPDATE 時觸發的第一個觸發器。
ExecIsInsertTrigger 觸發器 INSERT 觸發器。

1 = True
0 = False

ExecIsInsteadOfTrigger 觸發器 INSTEAD OF 觸發器。
ExecIsLastDeleteTrigger 觸發器 對錶執行 DELETE 時觸發的最後一個觸發器。
ExecIsLastInsertTrigger 觸發器 對錶執行 INSERT 時觸發的最後一個觸發器。
ExecIsLastUpdateTrigger 觸發器 對錶執行 UPDATE 時觸發的最後一個觸發器。
ExecIsQuotedIdentOn 過程、觸發器、視圖 建立時的 QUOTED_IDENTIFIER 設置。

1 = True
0 = False

ExecIsStartup 過程 啓動過程。

1 = True
0 = False

ExecIsTriggerDisabled 觸發器 禁用的觸發器。

1 = True
0 = False

ExecIsUpdateTrigger 觸發器 UPDATE 觸發器。

1 = True
0 = False

HasAfterTrigger 表,視圖 表或視圖具備 AFTER 觸發器。

1 = True
0 = False

HasInsertTrigger 表,視圖 表或視圖具備 INSERT 觸發器。

1 = True
0 = False

HasInsteadOfTrigger 表、視圖 表或視圖具備 INSTEAD OF 觸發器。

1 = True
0 = False

HasUpdateTrigger 表、視圖 表或視圖具備 UPDATE 觸發器。

1 = True
0 = False

IsAnsiNullsOn 函數、過程、表、觸發器、視圖 指定表的 ANSI NULLS 選項設置爲 ON,表示全部與空值的比較都取值爲 UNKNOWN。只要表存在,該設置就應用於表定義中的全部表達式,包括計算列和約束。

1 = ON
0 = OFF

IsCheckCnst 任何 CHECK 約束。

1 = True
0 = False

IsConstraint 任何 約束。

1 = True
0 = False

IsDefault 任何 綁定的默認值。

1 = True
0 = False

IsDefaultCnst 任何 DEFAULT 約束。

1 = True
0 = False

IsDeterministic 函數、視圖 函數的肯定性屬性。只適用於標量值及表值函數。

1 = 可肯定的
0 = 不可肯定的
NULL = 不是標量值或表值函數,或者是無效的對象 ID。

IsExecuted 任何 指定執行該對象的方式(視圖、過程或觸發器)。

1 = True
0 = False

IsExtendedProc 任何 擴展過程。

1 = True
0 = False

IsForeignKey 任何 FOREIGN KEY 約束。

1 = True
0 = False

IsIndexed 表、視圖 帶有索引的表或視圖。
IsIndexable 表、視圖 能夠建立索引的表或視圖。
IsInlineFunction 函數 內嵌函數。

1 = 內嵌函數
0 = 非內嵌函數
NULL = 不是函數,或者是無效的對象 ID。

IsMSShipped 任何 在安裝 Microsoft SQL Server 2000 的過程當中建立的對象。

1 = True
0 = False

IsPrimaryKey 任何 PRIMARY KEY 約束。

1 = True
0 = False

IsProcedure 任何 過程。

1 = True
0 = False

IsQuotedIdentOn 函數、過程、表、觸發器、視圖 指定表的被引用標識符設置爲 ON,表示在表定義所涉及的全部表達式中,雙引號標記分隔標識符。

1 = ON
0 = OFF

IsReplProc 任何 複製過程。

1 = True
0 = False

IsRule 任何 綁定的規則。

1 = True
0 = False

IsScalarFunction 函數 標量值函數。

1 = 標量值
0 = 表值
NULL = 不是函數,或者是無效的對象 ID。

IsSchemaBound 函數,視圖 使用 SCHEMABINDING 建立的架構綁定函數或視圖。

1 = 架構綁定
0 = 非架構綁定
NULL = 不是函數或視圖,或者是無效的對象 ID。

IsSystemTable 系統表。

1 = True
0 = False

IsTable 表。

1 = True
0 = False

IsTableFunction 函數 表值函數。

1 = 表值
0 = 標量值
NULL = 不是函數,或者是無效的對象 ID。

IsTrigger 任何 觸發器。

1 = True
0 = False

IsUniqueCnst 任何 UNIQUE 約束。

1 = True
0 = False

IsUserTable 用戶定義的表。

1 = True
0 = False

IsView 視圖 視圖。

1 = True
0 = False

OwnerId 任何 對象的全部者。

Nonnull = 對象全部者的數據庫用戶 ID。
NULL = 無效的輸入。

TableDeleteTrigger 表有 DELETE 觸發器。

>1 = 給定類型的第一個觸發器的 ID。

TableDeleteTriggerCount 表具備指定數目的 DELETE 觸發器。

>1 = 給定類型的第一個觸發器的 ID。
NULL = 無效的輸入。

TableFullTextBackgroundUpdateIndexOn 表已啓用全文後臺更新索引。

1 = True
0 = False

TableFulltextCatalogId 表的全文索引數據所駐留的全文目錄的 ID。

Nonzero = 全文目錄 ID,它與標識全文索引表中行的惟一索引相關。
0 = 表不是全文索引的。

TableFullTextChangeTrackingOn 表已啓用全文更改跟蹤。

1 = True
0 = False

TableFulltextKeyColumn 與某個單列惟一索引相關聯的列 ID,這個單列惟一索引參與全文索引定義。

0 = 表不是全文索引的。

TableFullTextPopulateStatus 0 = 不填充
1 = 徹底填充
2 = 增量填充
TableHasActiveFulltextIndex 表具備一個活動的全文索引。

1 = True
0 = False

TableHasCheckCnst 表具備 CHECK 約束。

1 = True
0 = False

TableHasClustIndex 表具備彙集索引。

1 = True
0 = False

TableHasDefaultCnst 表具備 DEFAULT 約束。

1 = True
0 = False

TableHasDeleteTrigger 表具備 DELETE 觸發器。

1 = True
0 = False

TableHasForeignKey 表具備 FOREIGN KEY 約束。

1 = True
0 = False

TableHasForeignRef 表由 FOREIGN KEY 約束引用。

1 = True
0 = False

TableHasIdentity 表具備標識列。

1 = True
0 = False

TableHasIndex 表具備一個任何類型的索引。

1 = True
0 = False

TableHasInsertTrigger 對象具備 Insert 觸發器。

1 = True
0 = False
NULL = 無效的輸入。

TableHasNonclustIndex 表具備非彙集索引。

1 = True
0 = False

TableHasPrimaryKey 表具備主鍵。

1 = True
0 = False

TableHasRowGuidCol 對於 uniqueidentifier列,表具備 ROWGUIDCOL。

1 = True
0 = False

TableHasTextImage 表具備 text 列。

1 = True
0 = False

TableHasTimestamp 表具備 timestamp列。

1 = True
0 = False

TableHasUniqueCnst 表具備 UNIQUE 約束。

1 = True
0 = False

TableHasUpdateTrigger 對象具備 Update 觸發器。

1 = True
0 = False

TableInsertTrigger 表具備 INSERT 觸發器。

>1 = 給定類型的第一個觸發器的 ID。

TableInsertTriggerCount 表具備指定數目的 INSERT 觸發器。

>1 = 給定類型的第一個觸發器的 ID。

TableIsFake 表不是真實的。根據須要 SQL Server 對其進行內部具體化。

1 = True
0 = False

TableIsPinned 駐留表以將其保留在數據高速緩存中。

1 = True
0 = False

TableTextInRowLimit text in row 所容許的最大字節數,若是沒有設置 text in row 選項則爲 0。
TableUpdateTrigger 表具備 UPDATE 觸發器。

>1 = 給定類型的第一個觸發器的 ID。

TableUpdateTriggerCount 表具備指定數目的 UPDATE 觸發器。

>1 = 給定類型的第一個觸發器的 ID。


返回類型

int

註釋

OBJECTPROPERTY(view_id,'IsIndexable') 可能會耗費大量的計算機資源,這是由於對 IsIndexable 屬性的評估須要分析視圖定義、進行規範化以及部分優化。

當至少添加了表的一列以用於索引時,OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') 將返回"1"(True)。只要添加了用於索引的第一列後,全文索引便可用於填充。

當除去索引中的最後一列時,索引變成非活動。

若是某些索引鍵需求條件得不到知足,那麼實際建立索引仍然可能會失敗。詳細信息請參見 CREATE INDEX。

示例
A. 查明 authors 是否爲一個表

下面的示例測試 authors 是否爲一個表。

IF OBJECTPROPERTY ( object_id('authors'),'ISTABLE') = 1
   print 'Authors is a table'

ELSE IF OBJECTPROPERTY ( object_id('authors'),'ISTABLE') = 0
   print 'Authors is not a table'

ELSE IF OBJECTPROPERTY ( object_id('authors'),'ISTABLE') IS NULL
   print 'ERROR: Authors is not an object'
B. 肯定是否在表上啓用了 text in row

下面的示例測試是否在 authors 表上啓用了 text in row 選項,以便 textntext 或 p_w_picpath 數據能夠存儲在它的數據行內。

USE pubs
SELECT OBJECTPROPERTY(OBJECT_ID('authors'),'TableTextInRowLimit')

結果集顯示在表上沒有啓用 text in row

-----
0
C. 肯定用戶定義的標量值函數是否具備肯定性

下面的示例測試用戶定義的標量值函數 fn_CubicVolume 是否具備肯定性,該函數返回小數。

CREATE FUNCTION fn_CubicVolume
-- Input dimensions in centimeters.
   (@CubeLength decimal(4,1), @CubeWidth decimal(4,1),
   @CubeHeight decimal(4,1) )
RETURNS decimal(12,3) -- Cubic Centimeters.
WITH SCHEMABINDING
AS
BEGIN
   RETURN ( @CubeLength * @CubeWidth * @CubeHeight )
END

--Is it a deterministic function?
SELECT OBJECTPROPERTY(OBJECT_ID('fn_CubicVolume'), 'IsDeterministic')

結果集顯示 fn_CubicVolume 是肯定性函數。

-----
1
相關文章
相關標籤/搜索