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

SQL ServerのOBJECTPROPERTY()を使用して、オブジェクトが主キーであるかどうかを確認します

    OBJECTPROPERTY()を使用できます SQL Serverの関数を使用して、オブジェクトが主キーであるかどうかを確認します。

    オブジェクトが主キーであるかどうかを確認するには、最初の引数としてオブジェクトIDを渡し、IsPrimaryKey 2番目の引数として。この関数は1を返します または0 主キーかどうかによって異なります。

    1の戻り値 であることを意味します 主キー、および値0 そうではないことを意味します。

    例1-基本的な使用法

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

    USE PK_Test;
    SELECT OBJECTPROPERTY(901578250, 'IsPrimaryKey') AS [IsPrimaryKey];
    

    結果:

    +----------------+
    | IsPrimaryKey   |
    |----------------|
    | 1              |
    +----------------+
    

    この場合、 PK_Test データベースには、提供されたIDを持つオブジェクトがあり、それが主キーです。

    例2–オブジェクトIDの取得

    オブジェクトの名前はわかっているがIDはわかっていない場合は、OBJECT_ID()を使用できます。 名前に基づいてIDを取得する関数。

    例:

    SELECT OBJECTPROPERTY(OBJECT_ID('PK_Musician'), 'IsPrimaryKey') AS [IsPrimaryKey];
    

    結果:

    +----------------+
    | IsPrimaryKey   |
    |----------------|
    | 1              |
    +----------------+
    

    この場合、前の例と同じオブジェクトをチェックしました。

    ここでも、IDが個別に出力されます。

    SELECT 
      OBJECT_ID('PK_Musician') AS [Object ID],
      OBJECTPROPERTY(OBJECT_ID('PK_Musician'), 'IsPrimaryKey') AS [IsPrimaryKey];
    

    結果:

    +-------------+----------------+
    | Object ID   | IsPrimaryKey   |
    |-------------+----------------|
    | 901578250   | 1              |
    +-------------+----------------+
    

    例3–オブジェクトが主キーではない場合

    オブジェクトが主キーでない場合は、次のようになります。

    SELECT OBJECTPROPERTY(885578193, 'IsPrimaryKey') AS [IsPrimaryKey];
    

    結果:

    +----------------+
    | IsPrimaryKey   |
    |----------------|
    | 0              |
    +----------------+
    

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

    ここでもOBJECT_ID()を使用しています 。

    SELECT 
      OBJECT_ID('Musician') AS [Object ID],
      OBJECTPROPERTY(OBJECT_ID('Musician'), 'IsPrimaryKey') AS [IsPrimaryKey],
      OBJECTPROPERTY(OBJECT_ID('Musician'), 'IsTable') AS [IsTable];
    

    結果:

    +-------------+----------------+-----------+
    | Object ID   | IsPrimaryKey   | IsTable   |
    |-------------+----------------+-----------|
    | 885578193   | 0              | 1         |
    +-------------+----------------+-----------+
    

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

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

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

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

    結果:

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

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

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


    1. エスケープされたUnicode文字をPostgreSQLで実際の文字に変換します

    2. 文字列がJSONであるかどうかをテストする方法は?

    3. AmazonRDSOracleインスタンスに接続するときに読み取り呼び出しエラーからマイナス1にアプローチする方法

    4. 事前入力されたデータベースの更新