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

OBJECTPROPERTY()を使用して、テーブルがSQLServerのシステムテーブルであるかどうかを確認します

    OBJECTPROPERTY() SQL Serverの関数を使用すると、オブジェクトの特定のプロパティを確認できます。

    この関数を使用して、オブジェクトがシステムテーブルであるかどうかを確認できます。これを行うには、最初の引数としてオブジェクトIDを渡し、IsSystemTable 2番目の引数として。この関数は1を返します または0 システムテーブルかどうかによって異なります(1 であることを意味します システムテーブル、および0 そうではないことを意味します。

    例1-基本的な使用法

    簡単な例を次に示します。

    SELECT OBJECTPROPERTY(3, 'IsSystemTable') AS [IsSystemTable];
    

    結果:

    +-----------------+
    | IsSystemTable   |
    |-----------------|
    | 1               |
    +-----------------+
    

    この場合、オブジェクトは システムテーブル。

    例2–オブジェクトはシステムテーブルではありません

    オブジェクトがシステムテーブルでない場合は、次のようになります。

    SELECT OBJECTPROPERTY(1013578649, 'IsSystemTable') AS [IsSystemTable];
    

    結果:

    +-----------------+
    | IsSystemTable   |
    |-----------------|
    | 0               |
    +-----------------+
    

    この場合、データベースはします 実際にはそのIDのオブジェクトがありますが、オブジェクトは実際にはユーザー定義のテーブルであるため、否定的な結果が得られます。

    ここでもOBJECT_ID()を使用しています オブジェクトの名前からIDを取得します。

    SELECT 
      OBJECT_ID('Dimension.City') AS [Object ID],
      OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsSystemTable') AS [IsSystemTable],
      OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];
    

    結果:

    +-------------+-----------------+---------------+
    | Object ID   | IsSystemTable   | IsUserTable   |
    |-------------+-----------------+---------------|
    | 1013578649  | 0               | 1             |
    +-------------+-----------------+---------------+
    

    また、オブジェクトがユーザー定義のテーブルであり、結果が正であるかどうかを確認しました。

    例3–オブジェクトが存在しない

    SQL Serverは、オブジェクトIDが現在のデータベースコンテキストにあると想定します。別のデータベースからオブジェクトIDを渡すと、NULLの結果が得られるか、誤った結果が得られます。

    SELECT 
      OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsSystemTable') AS [InvalidObject],
      OBJECTPROPERTY(12345678, 'IsSystemTable') AS [12345678];
    

    結果:

    +-----------------+------------+
    | InvalidObject   | 12345678   |
    |-----------------+------------|
    | NULL            | NULL       |
    +-----------------+------------+
    

    この場合、データベースにはその名前またはIDのオブジェクトが含まれていないため、結果はNULLになります。

    エラーが発生した場合、またはオブジェクトを表示する権限がない場合にもNULLが発生します。


    1. Django ConnectionAbortedError:[WinError10053]確立された接続がホストマシンのソフトウェアによって中止されました

    2. MYSQLでのバルク挿入

    3. 日付範囲の比較

    4. 警告:mysql_query():3は有効なMySQL-Linkリソースではありません