返回當前數據庫中對象的有關信息。數據庫
OBJECTPROPERTY ( id , property )緩存
id架構
一個表達式,包含當前數據庫中某個對象的 ID。id 的數據類型是 int。ide
Property函數
一個表達式,包含針對由 id 指定的對象將要返回的信息。Property 能夠是下面這些值中的一個。測試
說明 除非加以註釋,不然,若是 property 是無效的屬性名,則返回 NULL。優化
屬性名稱 | 對象類型 | 描述和返回的值 |
---|---|---|
CnstIsClustKey | 約束 | 帶有彙集索引的主鍵。 1 = True |
CnstIsColumn | 約束 | COLUMN 約束。 1 = True |
CnstIsDeleteCascade | 約束 | 帶有 ON DELETE CASCADE 選項的外鍵約束。 |
CnstIsDisabled | 約束 | 禁用的約束。 1 = True |
CnstIsNonclustKey | 約束 | 帶有非彙集索引的主鍵。 1 = True |
CnstIsNotTrusted | 約束 | 啓用約束時未檢查現有行,因此可能不是全部行都受約束的控制。 1 = True |
CnstIsNotRepl | 約束 | 使用 NOT FOR REPLICATION 關鍵字定義約束。 |
CnstIsUpdateCascade | 約束 | 帶有 ON UPDATE CASCADE 選項的外鍵約束。 |
ExecIsAfterTrigger | 觸發器 | AFTER 觸發器。 |
ExecIsAnsiNullsOn | 過程、觸發器、視圖 | 建立時的 ANSI_NULLS 設置。 1 = True |
ExecIsDeleteTrigger | 觸發器 | DELETE 觸發器。 1 = True |
ExecIsFirstDeleteTrigger | 觸發器 | 對錶執行 DELETE 時觸發的第一個觸發器。 |
ExecIsFirstInsertTrigger | 觸發器 | 對錶執行 INSERT 時觸發的第一個觸發器。 |
ExecIsFirstUpdateTrigger | 觸發器 | 對錶執行 UPDATE 時觸發的第一個觸發器。 |
ExecIsInsertTrigger | 觸發器 | INSERT 觸發器。 1 = True |
ExecIsInsteadOfTrigger | 觸發器 | INSTEAD OF 觸發器。 |
ExecIsLastDeleteTrigger | 觸發器 | 對錶執行 DELETE 時觸發的最後一個觸發器。 |
ExecIsLastInsertTrigger | 觸發器 | 對錶執行 INSERT 時觸發的最後一個觸發器。 |
ExecIsLastUpdateTrigger | 觸發器 | 對錶執行 UPDATE 時觸發的最後一個觸發器。 |
ExecIsQuotedIdentOn | 過程、觸發器、視圖 | 建立時的 QUOTED_IDENTIFIER 設置。 1 = True |
ExecIsStartup | 過程 | 啓動過程。 1 = True |
ExecIsTriggerDisabled | 觸發器 | 禁用的觸發器。 1 = True |
ExecIsUpdateTrigger | 觸發器 | UPDATE 觸發器。 1 = True |
HasAfterTrigger | 表,視圖 | 表或視圖具備 AFTER 觸發器。 1 = True |
HasInsertTrigger | 表,視圖 | 表或視圖具備 INSERT 觸發器。 1 = True |
HasInsteadOfTrigger | 表、視圖 | 表或視圖具備 INSTEAD OF 觸發器。 1 = True |
HasUpdateTrigger | 表、視圖 | 表或視圖具備 UPDATE 觸發器。 1 = True |
IsAnsiNullsOn | 函數、過程、表、觸發器、視圖 | 指定表的 ANSI NULLS 選項設置爲 ON,表示全部與空值的比較都取值爲 UNKNOWN。只要表存在,該設置就應用於表定義中的全部表達式,包括計算列和約束。 1 = ON |
IsCheckCnst | 任何 | CHECK 約束。 1 = True |
IsConstraint | 任何 | 約束。 1 = True |
IsDefault | 任何 | 綁定的默認值。 1 = True |
IsDefaultCnst | 任何 | DEFAULT 約束。 1 = True |
IsDeterministic | 函數、視圖 | 函數的肯定性屬性。只適用於標量值及表值函數。 1 = 可肯定的 |
IsExecuted | 任何 | 指定執行該對象的方式(視圖、過程或觸發器)。 1 = True |
IsExtendedProc | 任何 | 擴展過程。 1 = True |
IsForeignKey | 任何 | FOREIGN KEY 約束。 1 = True |
IsIndexed | 表、視圖 | 帶有索引的表或視圖。 |
IsIndexable | 表、視圖 | 能夠建立索引的表或視圖。 |
IsInlineFunction | 函數 | 內嵌函數。 1 = 內嵌函數 |
IsMSShipped | 任何 | 在安裝 Microsoft SQL Server 2000 的過程當中建立的對象。 1 = True |
IsPrimaryKey | 任何 | PRIMARY KEY 約束。 1 = True |
IsProcedure | 任何 | 過程。 1 = True |
IsQuotedIdentOn | 函數、過程、表、觸發器、視圖 | 指定表的被引用標識符設置爲 ON,表示在表定義所涉及的全部表達式中,雙引號標記分隔標識符。 1 = ON |
IsReplProc | 任何 | 複製過程。 1 = True |
IsRule | 任何 | 綁定的規則。 1 = True |
IsScalarFunction | 函數 | 標量值函數。 1 = 標量值 |
IsSchemaBound | 函數,視圖 | 使用 SCHEMABINDING 建立的架構綁定函數或視圖。 1 = 架構綁定 |
IsSystemTable | 表 | 系統表。 1 = True |
IsTable | 表 | 表。 1 = True |
IsTableFunction | 函數 | 表值函數。 1 = 表值 |
IsTrigger | 任何 | 觸發器。 1 = True |
IsUniqueCnst | 任何 | UNIQUE 約束。 1 = True |
IsUserTable | 表 | 用戶定義的表。 1 = True |
IsView | 視圖 | 視圖。 1 = True |
OwnerId | 任何 | 對象的全部者。 Nonnull = 對象全部者的數據庫用戶 ID。 |
TableDeleteTrigger | 表 | 表有 DELETE 觸發器。 >1 = 給定類型的第一個觸發器的 ID。 |
TableDeleteTriggerCount | 表 | 表具備指定數目的 DELETE 觸發器。 >1 = 給定類型的第一個觸發器的 ID。 |
TableFullTextBackgroundUpdateIndexOn | 表 | 表已啓用全文後臺更新索引。 1 = True |
TableFulltextCatalogId | 表 | 表的全文索引數據所駐留的全文目錄的 ID。 Nonzero = 全文目錄 ID,它與標識全文索引表中行的惟一索引相關。 |
TableFullTextChangeTrackingOn | 表 | 表已啓用全文更改跟蹤。 1 = True |
TableFulltextKeyColumn | 表 | 與某個單列惟一索引相關聯的列 ID,這個單列惟一索引參與全文索引定義。 0 = 表不是全文索引的。 |
TableFullTextPopulateStatus | 表 | 0 = 不填充 1 = 徹底填充 2 = 增量填充 |
TableHasActiveFulltextIndex | 表 | 表具備一個活動的全文索引。 1 = True |
TableHasCheckCnst | 表 | 表具備 CHECK 約束。 1 = True |
TableHasClustIndex | 表 | 表具備彙集索引。 1 = True |
TableHasDefaultCnst | 表 | 表具備 DEFAULT 約束。 1 = True |
TableHasDeleteTrigger | 表 | 表具備 DELETE 觸發器。 1 = True |
TableHasForeignKey | 表 | 表具備 FOREIGN KEY 約束。 1 = True |
TableHasForeignRef | 表 | 表由 FOREIGN KEY 約束引用。 1 = True |
TableHasIdentity | 表 | 表具備標識列。 1 = True |
TableHasIndex | 表 | 表具備一個任何類型的索引。 1 = True |
TableHasInsertTrigger | 表 | 對象具備 Insert 觸發器。 1 = True |
TableHasNonclustIndex | 表 | 表具備非彙集索引。 1 = True |
TableHasPrimaryKey | 表 | 表具備主鍵。 1 = True |
TableHasRowGuidCol | 表 | 對於 uniqueidentifier列,表具備 ROWGUIDCOL。 1 = True |
TableHasTextImage | 表 | 表具備 text 列。 1 = True |
TableHasTimestamp | 表 | 表具備 timestamp列。 1 = True |
TableHasUniqueCnst | 表 | 表具備 UNIQUE 約束。 1 = True |
TableHasUpdateTrigger | 表 | 對象具備 Update 觸發器。 1 = True |
TableInsertTrigger | 表 | 表具備 INSERT 觸發器。 >1 = 給定類型的第一個觸發器的 ID。 |
TableInsertTriggerCount | 表 | 表具備指定數目的 INSERT 觸發器。 >1 = 給定類型的第一個觸發器的 ID。 |
TableIsFake | 表 | 表不是真實的。根據須要 SQL Server 對其進行內部具體化。 1 = True |
TableIsPinned | 表 | 駐留表以將其保留在數據高速緩存中。 1 = True |
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。
下面的示例測試 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'
下面的示例測試是否在 authors 表上啓用了 text in row 選項,以便 text、ntext 或 p_w_picpath 數據能夠存儲在它的數據行內。
USE pubs SELECT OBJECTPROPERTY(OBJECT_ID('authors'),'TableTextInRowLimit')
結果集顯示在表上沒有啓用 text in row。
----- 0
下面的示例測試用戶定義的標量值函數 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