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

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

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

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

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

    例1-基本的な使用法

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

    USE Music;
    SELECT OBJECTPROPERTY(981578535, 'IsForeignKey') AS [IsForeignKey];
    

    結果:

    +----------------+
    | IsForeignKey   |
    |----------------|
    | 1              |
    +----------------+
    

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

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

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

    例:

    SELECT OBJECTPROPERTY(OBJECT_ID('FK_Albums_Artists'), 'IsForeignKey') AS [IsForeignKey];
    

    結果:

    +----------------+
    | IsForeignKey   |
    |----------------|
    | 1              |
    +----------------+
    

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

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

    SELECT 
      OBJECT_ID('FK_Albums_Artists') AS [Object ID],
      OBJECTPROPERTY(OBJECT_ID('FK_Albums_Artists'), 'IsForeignKey') AS [IsForeignKey];
    

    結果:

    +-------------+----------------+
    | Object ID   | IsForeignKey   |
    |-------------+----------------|
    | 981578535   | 1              |
    +-------------+----------------+
    

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

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

    SELECT OBJECTPROPERTY(1525580473, 'IsForeignKey') AS [IsForeignKey];
    

    結果:

    +----------------+
    | IsForeignKey   |
    |----------------|
    | 0              |
    +----------------+
    

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

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

    SELECT 
      OBJECT_ID('RockAlbums') AS [Object ID],
      OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsForeignKey') AS [IsForeignKey],
      OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];
    

    結果:

    +-------------+----------------+----------+
    | Object ID   | IsForeignKey   | IsView   |
    |-------------+----------------+----------|
    | 1525580473  | 0              | 1        |
    +-------------+----------------+----------+
    

    この場合、オブジェクトがビューであるかどうかも確認し、結果はポジティブです。

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

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

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

    結果:

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

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

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


    1. postgresql DBを使用してNULL値を格納するために必要なディスクスペースはどれくらいですか?

    2. テーブルに4つの列があり、3番目の列をフェッチしたい場合はどうすればよいですか。

    3. PL / SQLチュートリアル:PL/SQLについて知っておくべきことすべて

    4. OracleのC#パラメーター化クエリ-深刻で危険なバグ!