SQL SERVER OBJECTPROPERTY()函數的用法

OBJECTPROPERTY

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

語法

OBJECTPROPERTY id , property )

參數

id

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

Property

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


說明  除非加以註釋,否則,如果 property 是無效的屬性名,則返回 NULL。


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

1 = True
0 = False

CnstIsColumn約束COLUMN 約束。

1 = True
0 = False

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

1 = True
0 = False

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 = 表不是全文索引的。

TableFullTextPopulateStatus0 = 不填充
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

TableTextInRowLimittext 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


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