sql >> データベース >  >> RDS >> Sqlserver

SQL ServerでのOBJECTPROPERTYEX()のしくみ

    SQL Serverでは、OBJECTPROPERTYEX() 関数は、現在のデータベース内のスキーマスコープのオブジェクトに関する情報を返します。

    この関数は、OBJECTPROPERTY()とまったく同じことを行います 、より多くのプロパティをサポートし、戻り値が異なることを除いて。 OBJECTPROPERTYEX() 関数はsql_variantを返します タイプ、OBJECTPROPERTY() intを返します タイプ。

    構文

    この関数は、オブジェクトのIDと返されるプロパティの2つの引数を受け入れます。

    OBJECTPROPERTYEX ( id , property )
    

    例1-基本的な使用法

    この関数の基本的な使用法を示す例を次に示します。

    SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;
    

    結果:

    +----------+
    | Result   |
    |----------|
    | U        |
    +----------+
    

    この場合、IDが885578193のオブジェクトがあります そしてそれはテーブルです。このオブジェクトのBaseTypeはUです。

    例2–オブジェクトの命名

    前の例では、オブジェクトのIDを知っていました。ほとんどの場合、オブジェクトの名前だけがわかり、IDはわかりません。このような場合は、OBJECT_ID()を使用できます 名前に基づいてオブジェクトのIDを取得する関数。

    このように:

    SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;
    

    結果:

    +----------+
    | Result   |
    |----------|
    | U        |
    +----------+
    

    例3–その他のプロパティ

    これは、OBJECTPROPERTY()では返されないプロパティの多くを返す例です。 。

    USE WideWorldImportersDW;
    DECLARE @objectId int = OBJECT_ID(N'Integration.GenerateDateDimensionColumns');
    SELECT 
      OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType,
      OBJECTPROPERTYEX(@objectId, 'IsPrecise') AS IsPrecise,
      OBJECTPROPERTYEX(@objectId, 'SystemDataAccess') AS SystemDataAccess,
      OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS UserDataAccess;
    

    結果:

    +------------+-------------+--------------------+------------------+
    | BaseType   | IsPrecise   | SystemDataAccess   | UserDataAccess   |
    |------------+-------------+--------------------+------------------|
    | IF         | 0           | 1                  | 1                |
    +------------+-------------+--------------------+------------------+
    

    執筆時点では、OBJECTPROPERTYEX() 関数は109のプロパティをサポートします。この関数でサポートされているプロパティの完全なリストについては、以下を参照してください。

    例4–WHERE句内

    OBJECTPROPERTYEX()を使用できます WHERE 必要に応じて条項。

    この例では、2つのクエリを実行します。1つは外部キーを持つテーブルを返すもので、もう1つは外部キーによって参照されるテーブルを返すものです。

    USE Music;
    SELECT 
      SCHEMA_NAME(schema_id) AS [Schema], 
      name AS [Table]
    FROM sys.tables
    WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignKey') = 1;
    
    SELECT 
      SCHEMA_NAME(schema_id) AS [Schema], 
      name AS [Table]
    FROM sys.tables
    WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignRef') = 1;
    

    結果:

    Changed database context to 'Music'.
    +----------+---------+
    | Schema   | Table   |
    |----------+---------|
    | dbo      | Artists |
    | dbo      | Albums  |
    +----------+---------+
    (2 rows affected)
    +----------+---------+
    | Schema   | Table   |
    |----------+---------|
    | dbo      | Artists |
    | dbo      | Genres  |
    | dbo      | Country |
    +----------+---------+
    (3 rows affected)
    

    プロパティの完全なリスト

    OBJECTPROPERTYEX()でサポートされているプロパティの完全なリストは次のとおりです 機能:

    • BaseType
    • CnstIsClustKey
    • CnstIsColumn
    • CnstIsDeleteCascade
    • CnstIsDisabled
    • CnstIsNonclustKey
    • CnstIsNotRepl
    • CnstIsNotTrusted
    • CnstIsUpdateCascade
    • ExecIsAfterTrigger
    • ExecIsAnsiNullsOn
    • ExecIsDeleteTrigger
    • ExecIsFirstDeleteTrigger
    • ExecIsFirstInsertTrigger
    • ExecIsFirstUpdateTrigger
    • ExecIsInsertTrigger
    • ExecIsInsteadOfTrigger
    • ExecIsLastDeleteTrigger
    • ExecIsLastInsertTrigger
    • ExecIsLastUpdateTrigger
    • ExecIsQuotedIdentOn
    • ExecIsStartup
    • ExecIsTriggerDisabled
    • ExecIsTriggerNotForRepl
    • ExecIsUpdateTrigger
    • ExecIsWithNativeCompilation
    • HasAfterTrigger
    • HasDeleteTrigger
    • HasInsertTrigger
    • HasInsteadOfTrigger
    • HasUpdateTrigger
    • IsAnsiNullsOn
    • IsCheckCnst
    • IsConstraint
    • IsDefault
    • IsDefaultCnst
    • IsDeterministic
    • IsEncrypted
    • 実行済み
    • IsExtendedProc
    • IsForeignKey
    • IsIndexed
    • IsIndexable
    • IsInlineFunction
    • IsMSShipped
    • IsPrecise
    • IsPrimaryKey
    • IsProcedure
    • IsQuotedIdentOn
    • IsQueue
    • IsReplProc
    • IsRule
    • IsScalarFunction
    • IsSchemaBound
    • IsSystemTable
    • IsSystemVerified
    • IsTable
    • IsTableFunction
    • IsTrigger
    • IsUniqueCnst
    • IsUserTable
    • IsView
    • OwnerId
    • SchemaId
    • SystemDataAccess
    • TableDeleteTrigger
    • TableDeleteTriggerCount
    • TableFullTextMergeStatus
    • TableFullTextBackgroundUpdateIndexOn
    • TableFulltextCatalogId
    • TableFullTextChangeTrackingOn
    • TableFulltextDocsProcessed
    • TableFulltextFailCount
    • TableFulltextItemCount
    • TableFulltextKeyColumn
    • TableFulltextPendingChanges
    • TableFulltextPopulateStatus
    • TableFullTextSemanticExtraction
    • TableHasActiveFulltextIndex
    • TableHasCheckCnst
    • TableHasClustIndex
    • TableHasDefaultCnst
    • TableHasDeleteTrigger
    • TableHasForeignKey
    • TableHasForeignRef
    • TableHasIdentity
    • TableHasIndex
    • TableHasInsertTrigger
    • TableHasNonclustIndex
    • TableHasPrimaryKey
    • TableHasRowGuidCol
    • TableHasTextImage
    • TableHasTimestamp
    • TableHasUniqueCnst
    • TableHasUpdateTrigger
    • TableHasVarDecimalStorageFormat
    • TableInsertTrigger
    • TableInsertTriggerCount
    • TableIsFake
    • TableIsLockedOnBulkLoad
    • TableIsMemoryOptimized
    • TableIsPinned
    • TableTextInRowLimit
    • TableUpdateTrigger
    • TableUpdateTriggerCount
    • UserDataAccess
    • TableHasColumnSet
    • カーディナリティ
    • TableTemporalType

    各プロパティの詳細な説明については、Microsoftのドキュメントを参照してください。

    OBJECTPROPERTY()も参照してください vs OBJECTPROPERTYEX() これら2つの機能の違いの詳細については、こちらをご覧ください。


    1. 最も人気のある8つのデータベース

    2. DELIMITER //はトリガーで何をしますか?

    3. 2013 MVPサミット:簡単なレビューと展望

    4. SQL Server(T-SQL)の文字列の途中に文字を挿入する