返回當(dāng)前數(shù)據(jù)庫中對象的有關(guān)信息。
OBJECTPROPERTY ( id , property )
id
一個表達(dá)式,包含當(dāng)前數(shù)據(jù)庫中某個對象的 ID。id 的數(shù)據(jù)類型是 int。
Property
一個表達(dá)式,包含針對由 id 指定的對象將要返回的信息。Property 可以是下面這些值中的一個。
說明 除非加以注釋,否則,如果 property 是無效的屬性名,則返回 NULL。
屬性名稱 | 對象類型 | 描述和返回的值 |
---|---|---|
CnstIsClustKey | 約束 | 帶有聚集索引的主鍵。 1 = True |
CnstIsColumn | 約束 | COLUMN 約束。 1 = True |
CnstIsDeleteCascade | 約束 | 帶有 ON DELETE CASCADE 選項(xiàng)的外鍵約束。 |
CnstIsDisabled | 約束 | 禁用的約束。 1 = True |
CnstIsNonclustKey | 約束 | 帶有非聚集索引的主鍵。 1 = True |
CnstIsNotTrusted | 約束 | 啟用約束時未檢查現(xiàn)有行,所以可能不是所有行都受約束的控制。 1 = True |
CnstIsNotRepl | 約束 | 使用 NOT FOR REPLICATION 關(guān)鍵字定義約束。 |
CnstIsUpdateCascade | 約束 | 帶有 ON UPDATE CASCADE 選項(xiàng)的外鍵約束。 |
ExecIsAfterTrigger | 觸發(fā)器 | AFTER 觸發(fā)器。 |
ExecIsAnsiNullsOn | 過程、觸發(fā)器、視圖 | 創(chuàng)建時的 ANSI_NULLS 設(shè)置。 1 = True |
ExecIsDeleteTrigger | 觸發(fā)器 | DELETE 觸發(fā)器。 1 = True |
ExecIsFirstDeleteTrigger | 觸發(fā)器 | 對表執(zhí)行 DELETE 時觸發(fā)的第一個觸發(fā)器。 |
ExecIsFirstInsertTrigger | 觸發(fā)器 | 對表執(zhí)行 INSERT 時觸發(fā)的第一個觸發(fā)器。 |
ExecIsFirstUpdateTrigger | 觸發(fā)器 | 對表執(zhí)行 UPDATE 時觸發(fā)的第一個觸發(fā)器。 |
ExecIsInsertTrigger | 觸發(fā)器 | INSERT 觸發(fā)器。 1 = True |
ExecIsInsteadOfTrigger | 觸發(fā)器 | INSTEAD OF 觸發(fā)器。 |
ExecIsLastDeleteTrigger | 觸發(fā)器 | 對表執(zhí)行 DELETE 時觸發(fā)的最后一個觸發(fā)器。 |
ExecIsLastInsertTrigger | 觸發(fā)器 | 對表執(zhí)行 INSERT 時觸發(fā)的最后一個觸發(fā)器。 |
ExecIsLastUpdateTrigger | 觸發(fā)器 | 對表執(zhí)行 UPDATE 時觸發(fā)的最后一個觸發(fā)器。 |
ExecIsQuotedIdentOn | 過程、觸發(fā)器、視圖 | 創(chuàng)建時的 QUOTED_IDENTIFIER 設(shè)置。 1 = True |
ExecIsStartup | 過程 | 啟動過程。 1 = True |
ExecIsTriggerDisabled | 觸發(fā)器 | 禁用的觸發(fā)器。 1 = True |
ExecIsUpdateTrigger | 觸發(fā)器 | UPDATE 觸發(fā)器。 1 = True |
HasAfterTrigger | 表,視圖 | 表或視圖具有 AFTER 觸發(fā)器。 1 = True |
HasInsertTrigger | 表,視圖 | 表或視圖具有 INSERT 觸發(fā)器。 1 = True |
HasInsteadOfTrigger | 表、視圖 | 表或視圖具有 INSTEAD OF 觸發(fā)器。 1 = True |
HasUpdateTrigger | 表、視圖 | 表或視圖具有 UPDATE 觸發(fā)器。 1 = True |
IsAnsiNullsOn | 函數(shù)、過程、表、觸發(fā)器、視圖 | 指定表的 ANSI NULLS 選項(xiàng)設(shè)置為 ON,表示所有與空值的比較都取值為 UNKNOWN。只要表存在,該設(shè)置就應(yīng)用于表定義中的所有表達(dá)式,包括計(jì)算列和約束。 1 = ON |
IsCheckCnst | 任何 | CHECK 約束。 1 = True |
IsConstraint | 任何 | 約束。 1 = True |
IsDefault | 任何 | 綁定的默認(rèn)值。 1 = True |
IsDefaultCnst | 任何 | DEFAULT 約束。 1 = True |
IsDeterministic | 函數(shù)、視圖 | 函數(shù)的確定性屬性。只適用于標(biāo)量值及表值函數(shù)。 1 = 可確定的 |
IsExecuted | 任何 | 指定執(zhí)行該對象的方式(視圖、過程或觸發(fā)器)。 1 = True |
IsExtendedProc | 任何 | 擴(kuò)展過程。 1 = True |
IsForeignKey | 任何 | FOREIGN KEY 約束。 1 = True |
IsIndexed | 表、視圖 | 帶有索引的表或視圖。 |
IsIndexable | 表、視圖 | 可以創(chuàng)建索引的表或視圖。 |
IsInlineFunction | 函數(shù) | 內(nèi)嵌函數(shù)。 1 = 內(nèi)嵌函數(shù) |
IsMSShipped | 任何 | 在安裝 Microsoft® SQL Server™ 2000 的過程中創(chuàng)建的對象。 1 = True |
IsPrimaryKey | 任何 | PRIMARY KEY 約束。 1 = True |
IsProcedure | 任何 | 過程。 1 = True |
IsQuotedIdentOn | 函數(shù)、過程、表、觸發(fā)器、視圖 | 指定表的被引用標(biāo)識符設(shè)置為 ON,表示在表定義所涉及的所有表達(dá)式中,雙引號標(biāo)記分隔標(biāo)識符。 1 = ON |
IsReplProc | 任何 | 復(fù)制過程。 1 = True |
IsRule | 任何 | 綁定的規(guī)則。 1 = True |
IsScalarFunction | 函數(shù) | 標(biāo)量值函數(shù)。 1 = 標(biāo)量值 |
IsSchemaBound | 函數(shù),視圖 | 使用 SCHEMABINDING 創(chuàng)建的架構(gòu)綁定函數(shù)或視圖。 1 = 架構(gòu)綁定 |
IsSystemTable | 表 | 系統(tǒng)表。 1 = True |
IsTable | 表 | 表。 1 = True |
IsTableFunction | 函數(shù) | 表值函數(shù)。 1 = 表值 |
IsTrigger | 任何 | 觸發(fā)器。 1 = True |
IsUniqueCnst | 任何 | UNIQUE 約束。 1 = True |
IsUserTable | 表 | 用戶定義的表。 1 = True |
IsView | 視圖 | 視圖。 1 = True |
OwnerId | 任何 | 對象的所有者。 Nonnull = 對象所有者的數(shù)據(jù)庫用戶 ID。 |
TableDeleteTrigger | 表 | 表有 DELETE 觸發(fā)器。 >1 = 給定類型的第一個觸發(fā)器的 ID。 |
TableDeleteTriggerCount | 表 | 表具有指定數(shù)目的 DELETE 觸發(fā)器。 >1 = 給定類型的第一個觸發(fā)器的 ID。 |
TableFullTextBackgroundUpdateIndexOn | 表 | 表已啟用全文后臺更新索引。 1 = True |
TableFulltextCatalogId | 表 | 表的全文索引數(shù)據(jù)所駐留的全文目錄的 ID。 Nonzero = 全文目錄 ID,它與標(biāo)識全文索引表中行的唯一索引相關(guān)。 |
TableFullTextChangeTrackingOn | 表 | 表已啟用全文更改跟蹤。 1 = True |
TableFulltextKeyColumn | 表 | 與某個單列唯一索引相關(guān)聯(lián)的列 ID,這個單列唯一索引參與全文索引定義。 0 = 表不是全文索引的。 |
TableFullTextPopulateStatus | 表 | 0 = 不填充 1 = 完全填充 2 = 增量填充 |
TableHasActiveFulltextIndex | 表 | 表具有一個活動的全文索引。 1 = True |
TableHasCheckCnst | 表 | 表具有 CHECK 約束。 1 = True |
TableHasClustIndex | 表 | 表具有聚集索引。 1 = True |
TableHasDefaultCnst | 表 | 表具有 DEFAULT 約束。 1 = True |
TableHasDeleteTrigger | 表 | 表具有 DELETE 觸發(fā)器。 1 = True |
TableHasForeignKey | 表 | 表具有 FOREIGN KEY 約束。 1 = True |
TableHasForeignRef | 表 | 表由 FOREIGN KEY 約束引用。 1 = True |
TableHasIdentity | 表 | 表具有標(biāo)識列。 1 = True |
TableHasIndex | 表 | 表具有一個任何類型的索引。 1 = True |
TableHasInsertTrigger | 表 | 對象具有 Insert 觸發(fā)器。 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 觸發(fā)器。 1 = True |
TableInsertTrigger | 表 | 表具有 INSERT 觸發(fā)器。 >1 = 給定類型的第一個觸發(fā)器的 ID。 |
TableInsertTriggerCount | 表 | 表具有指定數(shù)目的 INSERT 觸發(fā)器。 >1 = 給定類型的第一個觸發(fā)器的 ID。 |
TableIsFake | 表 | 表不是真實(shí)的。根據(jù)需要 SQL Server 對其進(jìn)行內(nèi)部具體化。 1 = True |
TableIsPinned | 表 | 駐留表以將其保留在數(shù)據(jù)高速緩存中。 1 = True |
TableTextInRowLimit | 表 | text in row 所允許的最大字節(jié)數(shù),如果沒有設(shè)置 text in row 選項(xiàng)則為 0。 |
TableUpdateTrigger | 表 | 表具有 UPDATE 觸發(fā)器。 >1 = 給定類型的第一個觸發(fā)器的 ID。 |
TableUpdateTriggerCount | 表 | 表具有指定數(shù)目的 UPDATE 觸發(fā)器。 >1 = 給定類型的第一個觸發(fā)器的 ID。 |
int
OBJECTPROPERTY(view_id,'IsIndexable') 可能會耗費(fèi)大量的計(jì)算機(jī)資源,這是因?yàn)閷?IsIndexable 屬性的評估需要分析視圖定義、進(jìn)行規(guī)范化以及部分優(yōu)化。
當(dāng)至少添加了表的一列以用于索引時,OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') 將返回"1"(True)。只要添加了用于索引的第一列后,全文索引即可用于填充。
當(dāng)除去索引中的最后一列時,索引變成非活動。
如果某些索引鍵需求條件得不到滿足,那么實(shí)際創(chuàng)建索引仍然可能會失敗。詳細(xì)信息請參見 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 選項(xiàng),以便 text、ntext 或 image 數(shù)據(jù)可以存儲在它的數(shù)據(jù)行內(nèi)。
USE pubs
SELECT OBJECTPROPERTY(OBJECT_ID('authors'),'TableTextInRowLimit')
結(jié)果集顯示在表上沒有啟用 text in row。
-----
0
下面的示例測試用戶定義的標(biāo)量值函數(shù) fn_CubicVolume 是否具有確定性,該函數(shù)返回小數(shù)。
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')
結(jié)果集顯示 fn_CubicVolume 是確定性函數(shù)。
-----相關(guān)文章
1