【SQL server基礎】objectproperty()函數
SQL Server OBJECTPROPERTY使用方法
OBJECTPROPERTY 返回有關當前數據庫中的模式作用域對象的信息。此函數不能用於不是模式範圍的對象,例如數據定義語言(DDL)觸發器和事件通知。
OBJECTPROPERTY 語法:
1 OBJECTPROPERTY ( id , property )
參數:
id:表示當前數據庫中對象ID的表達式。id是int,並且被假定為當前數據庫上下文中的模式作用域對象。
property:是表示由id指定的對象返回的信息的表達式。屬性可以是以下值之一。
註意:
除非另有說明,否則當屬性不是有效的屬性名稱時返回NULL ,id不是有效的對象ID,
id是指定屬性的不受支持的對象類型,或者調用者沒有查看對象元數據的權限。
屬性名稱 | 對象類型 | 說明和返回的值 | ||
CnstIsClustKey | 約束 |
具有聚集索引的 PRIMARY KEY 約束。 1 = True 0 = False |
||
CnstIsColumn | 約束 |
單個列上的 CHECK、DEFAULT 或 FOREIGN KEY 約束。 1 = True 0 = False |
||
CnstIsDeleteCascade | 約束 |
具有 ON DELETE CASCADE 選項的 FOREIGN KEY 約束。 1 = True 0 = False |
||
CnstIsDisabled |
約束 |
禁用的約束。 1 = True 0 = False |
||
CnstIsNonclustKey | 約束 |
非聚集索引的 PRIMARY KEY 或 UNIQUE 約束。 1 = True 0 = False |
||
CnstIsNotRepl | 約束 |
使用 NOT FOR REPLICATION 關鍵字定義的約束。 1 = True 0 = False |
||
CnstIsNotTrusted | 約束 |
啟用約束時未檢查現有行,因此可能不是所有行都適用該約束。 1 = True 0 = False |
||
CnstIsUpdateCascade | 約束 |
具有 ON UPDATE CASCADE 選項的 FOREIGN KEY 約束。 1 = True 0 = False |
||
ExecIsAfterTrigger | 觸發器 |
AFTER 觸發器。 1 = True 0 = False |
||
ExecIsAnsiNullsOn | Transact-SQL 函數、Transact-SQL 過程、Transact-SQL 觸發器、視圖 |
創建時的 ANSI_NULLS 設置。 1 = True 0 = False |
||
ExecIsDeleteTrigger | 觸發器 |
DELETE 觸發器。 1 = True 0 = False |
||
ExecIsFirstDeleteTrigger | 觸發器 |
對表執行 DELETE 時觸發的第一個觸發器。 1 = True 0 = False |
||
ExecIsFirstInsertTrigger | 觸發器 |
對表執行 INSERT 時觸發的第一個觸發器。 1 = True 0 = False |
||
ExecIsFirstUpdateTrigger | 觸發器 |
對表執行 UPDATE 時觸發的第一個觸發器。 1 = True 0 = False |
||
ExecIsInsertTrigger | 觸發器 |
INSERT 觸發器。 1 = True 0 = False |
||
ExecIsInsteadOfTrigger | 觸發器 |
INSTEAD OF 觸發器。 1 = True 0 = False |
||
ExecIsLastDeleteTrigger | 觸發器 |
對表執行 DELETE 時激發的最後一個觸發器。 1 = True 0 = False |
||
ExecIsLastInsertTrigger | 觸發器 |
對表執行 INSERT 時激發的最後一個觸發器。 1 = True 0 = False |
||
ExecIsLastUpdateTrigger | 觸發器 |
對表執行 UPDATE 時激發的最後一個觸發器。 1 = True 0 = False |
||
ExecIsQuotedIdentOn | Transact-SQL 函數、Transact-SQL 過程、Transact-SQL 觸發器、視圖 |
創建時的 QUOTED_IDENTIFIER 設置。 1 = True 0 = False |
||
ExecIsStartup | 過程 |
啟動過程。 1 = True 0 = False |
||
ExecIsTriggerDisabled | 觸發器 |
禁用的觸發器。 1 = True 0 = False |
||
ExecIsTriggerNotForRepl | 觸發器 |
定義為 NOT FOR REPLICATION 的觸發器。 1 = True 0 = False |
||
ExecIsUpdateTrigger | 觸發器 |
UPDATE 觸發器。 1 = True 0 = False |
||
HasAfterTrigger | 表、視圖 |
表或視圖具有 AFTER 觸發器。 1 = True 0 = False |
||
HasDeleteTrigger | 表、視圖 |
表或視圖具有 DELETE 觸發器。 1 = True 0 = False |
||
HasInsertTrigger | 表、視圖 |
表或視圖具有 INSERT 觸發器。 1 = True 0 = False |
||
HasInsteadOfTrigger | 表、視圖 |
表或視圖具有 INSTEAD OF 觸發器。 1 = True 0 = False |
||
HasUpdateTrigger | 表、視圖 |
表或視圖具有 UPDATE 觸發器。 1 = True 0 = False |
||
IsAnsiNullsOn | Transact-SQL 函數、Transact-SQL 過程、表、Transact-SQL 觸發器、視圖 |
指定表的 ANSI NULLS 選項設置為 ON。這表示所有對空值的比較都取值為 UNKNOWN。只要表存在,此設置將應用於表定義中的所有表達式,包括計算列和約束。 1 = True 0 = False |
||
IsCheckCnst | 架構範圍內的任何對象 |
CHECK 約束。 1 = True 0 = False |
||
IsConstraint | 架構範圍內的任何對象 |
列或表的單列 CHECK、DEFAULT 或 FOREIGN KEY 約束。 1 = True 0 = False |
||
IsDefault | 架構範圍內的任何對象 |
綁定的默認值。 1 = True 0 = False |
||
IsDefaultCnst | 架構範圍內的任何對象 |
DEFAULT 約束。 1 = True 0 = False |
||
IsDeterministic | 函數、視圖 |
函數或視圖的確定性屬性。 1 = 確定 0 = 不確定 |
||
IsEncrypted | Transact-SQL 函數、Transact-SQL 過程、表、Transact-SQL 觸發器和視圖 |
指示模塊語句的原始文本已轉換為模糊格式。模糊代碼的輸出在 SQL Server 2005 的任何目錄視圖中都不能直接顯示。對系統表或數據庫文件沒有訪問權限的用戶不能檢索模糊文本。但是,能夠通過 DAC 端口訪問系統表的用戶或能夠直接訪問數據庫文件的用戶可以檢索此文本。此外,能夠向服務器進程附加調試器的用戶可在運行時從內存中檢索原始過程。 1 = 已加密 0 = 未加密 基本數據類型:int |
||
IsExecuted | 架構範圍內的任何對象 |
可執行對象(視圖、過程、函數或觸發器)。 1 = True 0 = False |
||
IsExtendedProc | 架構範圍內的任何對象 |
擴展過程。 1 = True 0 = False |
||
IsForeignKey | 架構範圍內的任何對象 |
FOREIGN KEY 約束。 1 = True 0 = False |
||
IsIndexed | 表、視圖 |
包含索引的表或視圖。 1 = True 0 = False |
||
IsIndexable | 表、視圖 |
可以創建索引的表或視圖。 1 = True 0 = False |
||
IsInlineFunction | 函數 |
內聯函數。 1 = 內聯函數 0 = 非內聯函數 |
||
IsMSShipped | 架構範圍內的任何對象 |
安裝 SQL Server 過程中創建的對象。 1 = True 0 = False |
||
IsPrimaryKey | 架構範圍內的任何對象 |
PRIMARY KEY 約束。 1 = True 0 = False NULL = 非函數,或對象 ID 無效。 |
||
IsProcedure | 架構範圍內的任何對象 |
過程。 1 = True 0 = False |
||
IsQuotedIdentOn | Transact-SQL 函數、Transact-SQL 過程、表、Transact-SQL 觸發器、視圖、CHECK 約束、DEFAULT 定義 |
指定對象的引號標識符設置為 ON。這表示用英文雙引號分隔對象定義中涉及的所有表達式中的標識符。 1 = ON 0 = OFF |
||
IsQueue | 架構範圍內的任何對象 |
Service Broker 隊列 1 = True 0 = False |
||
IsReplProc | 架構範圍內的任何對象 |
復制過程。 1 = True 0 = False |
||
IsRule | 架構範圍內的任何對象 |
綁定規則。 1 = True 0 = False |
||
IsScalarFunction | 函數 |
標量值函數。 1 = 標量值函數 0 = 非標量值函數 |
||
IsSchemaBound | 函數、視圖 |
使用 SCHEMABINDING 創建的綁定到架構的函數或視圖。 1 = 綁定到架構 0 = 不綁定架構。 |
||
IsSystemTable | 表 |
系統表。 1 = True 0 = False |
||
IsTable | 表 |
表。 1 = True 0 = False |
||
IsTableFunction | 函數 |
表值函數。 1 = 表值函數 0 = 非表值函數 |
||
IsTrigger | 架構範圍內的任何對象 |
觸發器。 1 = True 0 = False |
||
IsUniqueCnst | 架構範圍內的任何對象 |
UNIQUE 約束。 1 = True 0 = False |
||
IsUserTable | 表 |
用戶定義的表。 1 = True 0 = False |
||
IsView | 視圖 |
視圖。 1 = True 0 = False |
||
OwnerId | 架構範圍內的任何對象 |
對象的所有者。
|
||
TableDeleteTrigger | 表 |
表具有 DELETE 觸發器。 >1 = 指定類型的第一個觸發器的 ID。 |
||
TableDeleteTriggerCount | 表 |
表具有指定數目的 DELETE 觸發器。 >0 = DELETE 觸發器數目。 |
||
TableFullTextMergeStatus | 表 |
表所具有的全文索引當前是否正在合並。 0 = 表沒有全文索引,或者全文索引未在合並。 1 = 全文索引正在合並。 |
||
TableFullTextBackgroundUpdateIndexOn | 表 |
表已啟用全文後臺更新索引(自動更改跟蹤)。 1 = TRUE 0 = FALSE |
||
TableFulltextCatalogId | 表 |
表的全文索引數據所在的全文目錄的 ID。 非零 = 全文目錄 ID,它與全文索引表中標識行的唯一索引相關。 0 = 表沒有全文索引。 |
||
TableFulltextChangeTrackingOn | 表 |
適用於:SQL Server 2008通過SQL Server 2016. |
||
TableFulltextDocsProcessed | 表 |
適用於:SQL Server 2008通過SQL Server 2016. |
||
TableFulltextFailCount | 表 | 行數全文搜索沒有索引。 0 =人口已經完成。 > 0 =以下(A或B)之一:A)自完全,增量和手動更新開始以來未編入索引的文檔數量更改跟蹤人口。B)對於具有後臺更新索引的變更跟蹤,自開始人口以來未編入索引的行數,或者重新啟動人口。這可能是由於模式更改,目錄重建,服務器重新啟動等引起的。 NULL =表沒有全文索引。 |
||
TableFulltextItemCount | 表 | 成功全文索引的行數 | ||
TableFulltextKeyColumn | 表 | 與參與全文索引定義的單列唯一索引相關聯的列的ID。 0 =表沒有全文索引。 |
||
TableFulltextPendingChanges | 表 |
要處理的掛起更改跟蹤項的數目。 0 = 未啟用更改跟蹤。 NULL = 表沒有全文索引。 |
||
TableFulltextPopulateStatus | 表 |
0 = 空閑。 1 = 正在進行完全填充。 2 = 正在進行增量填充。 3 = 正在傳播所跟蹤的更改。 4 = 正在進行後臺更新索引(例如,自動跟蹤更改)。 5 = 全文索引已中止或暫停。 |
||
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 |
||
TableHasNonclustIndex | 表 |
表有非聚集索引。 1 = True 0 = False |
||
TableHasPrimaryKey | 表 |
表具有主鍵。 1 = True 0 = False |
||
TableHasRowGuidCol | 表 |
表具有用於唯一標識列的ROWGUIDCOL。 |
||
TableHasTextImage | 表 |
表具有 text、ntext 或 image 列。 1 = True 0 = False |
||
TableHasTimestamp | 表 |
表具有一個時間戳列。 |
||
TableHasUniqueCnst | 表 |
表具有 UNIQUE 約束。 1 = True 0 = False |
||
TableHasUpdateTrigger | 表 |
對象有 UPDATE 觸發器。 1 = True 0 = False |
||
TableHasVarDecimalStorageFormat | 表 | 表啟用了vardecimal存儲格式。 1 = True 0 = False |
||
TableInsertTrigger | 表 |
表具有 INSERT 觸發器。 >1 = 指定類型的第一個觸發器的 ID。 |
||
TableInsertTriggerCount | 表 |
表有指定數目的 INSERT 觸發器。 >0 = INSERT 觸發器的個數。 |
||
TableIsFake | 表 |
表不是真實的表。它將由 SQL Server 數據庫引擎根據需要在內部進行具體化。 1 = True 0 = False |
||
TableIsLockedOnBulkLoad | 表 | 由於bcp或BULK INSERT作業,表被鎖定。 1 = True 0 = False |
||
TableIsPinned | 表 | 表被固定在數據緩存中。 0 = False |
||
TableIsMemoryOptimized | 表 | 表是內存優化 1 = True 0 = False 基本數據類型:int |
||
TableTextInRowLimit | 表 | 行中的文本允許的最大字節數。 如果沒有設置行中的文本選項,則為0。 |
||
TableUpdateTrigger | 表 | 表有一個UPDATE觸發器。 > 1 =具有指定類型的第一個觸發器的ID。 |
||
TableUpdateTriggerCount | 表 |
該表具有指定數量的UPDATE觸發器。 |
||
TableHasColumnSet | 表 |
表具有列集。 0 = False 1 = True |
||
TableTemporalType | 表 | 指定表的類型。 0 =非時間表 1 =系統版本表 2的歷史表2 =系統版本化的時間表 |
1 -- 驗證 dbo.Department 是否是一個表 2 IF (OBJECTPROPERTY (OBJECT_ID(N‘dbo.Department‘),‘ISTABLE‘) = 1) 3 begin 4 select ‘Department 是一個表‘ 5 end 6 ELSE IF (OBJECTPROPERTY (OBJECT_ID(N‘dbo.Department‘),‘ISTABLE‘) = 0) 7 begin 8 select ‘Department 不是一個表‘ 9 end 10 ELSE IF (OBJECTPROPERTY (OBJECT_ID(N‘dbo.Department‘),‘ISTABLE‘) IS NULL) 11 begin 12 select ‘Department 不是一個有效的對象‘ 13 end 14 GO
1 -- 驗證表 Department 是否 是用戶自定義的表 2 IF (OBJECTPROPERTY (OBJECT_ID(N‘dbo.Department‘),‘IsUserTable‘) = 1) 3 begin 4 SELECT ‘Department 是用戶自定義的表‘ 5 end 6 ELSE 7 begin 8 SELECT ‘Department 不是用戶自定義的表‘; 9 end 10 GO
【SQL server基礎】objectproperty()函數