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

SQL Serverデータベース内のすべてのID列を一覧表示します:sys.identity_columns

    T-SQLを使用して、SQLServerのデータベース内のID列のリストを返すことができます。

    これは、sys.identity_columnsを使用して行うことができます システムカタログビュー。

    例1-基本的な使用法

    実例を示します。

    USE Test;
    SELECT 
      OBJECT_NAME(object_id) AS [object],
      name,
      seed_value,
      increment_value,
      last_value,
      is_not_for_replication
    FROM sys.identity_columns;
    

    結果:

    +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
    | object                    | name             | seed_value   | increment_value   | last_value   | is_not_for_replication   |
    |---------------------------+------------------+--------------+-------------------+--------------+--------------------------|
    | ConstraintTest            | ConstraintTestId | 1            | 1                 | 17           | 0                        |
    | sqlagent_job_history      | instance_id      | 1            | 1                 | NULL         | 0                        |
    | sqlagent_jobsteps_logs    | log_id           | 1            | 1                 | NULL         | 0                        |
    | Cats                      | id               | 1            | 1                 | 2            | 0                        |
    | Dogs                      | id               | 1            | 1                 | 1            | 0                        |
    | t1                        | id               | 1            | 1                 | 2            | 0                        |
    | t2                        | id               | 150          | 10                | 160          | 0                        |
    | scope_identity_test       | id               | 1            | 1                 | 3            | 0                        |
    | Event                     | EventId          | 1            | 1                 | NULL         | 0                        |
    | Scoreboard                | ScoreId          | 1            | 1                 | 8            | 0                        |
    | Pets                      | PetId            | 1            | 1                 | 5            | 0                        |
    | BestFriends               | pet_id           | 101          | 10                | 121          | 0                        |
    | Cities                    | CityId           | 150          | 10                | 180          | 0                        |
    | Colors                    | ColorId          | 1            | 1                 | 6            | 0                        |
    | queue_messages_1977058079 | queuing_order    | 0            | 1                 | NULL         | 0                        |
    | t6                        | id               | 1            | 1                 | 1            | 0                        |
    | t7                        | id               | 100          | 1                 | 100          | 0                        |
    | queue_messages_2009058193 | queuing_order    | 0            | 1                 | NULL         | 0                        |
    | queue_messages_2041058307 | queuing_order    | 0            | 1                 | NULL         | 0                        |
    +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
    

    Testを使用しました この例のデータベース。以前にさまざまなシード増分値を使用してID列を作成したことがあるため、これを選択しました。

    この例では、OBJECT_NAME()を使用しました object_idからオブジェクトの名前を取得する関数 桁。この場合、それはテーブル名です。つまり、最初の列にはテーブル名がリストされ、2番目の列にはID列がリストされます。

    例2–すべての列を一覧表示する

    前の例では、ほんの一握りの列しか返しませんでした。これは、sys.identity_columnsが原因です。 多くの列を返します。

    この例では、1つのID列(つまり、1つの行)のみを返しますが、その行のすべての列を返します。結果を表示するときに垂直出力を使用して、横にスクロールする必要がないようにします。

    SELECT *
    FROM sys.identity_columns
    WHERE OBJECT_NAME(object_id) = 'Cities';
    

    結果(垂直出力を使用):

    object_id                           | 1970106059
    name                                | CityId
    column_id                           | 1
    system_type_id                      | 56
    user_type_id                        | 56
    max_length                          | 4
    precision                           | 10
    scale                               | 0
    collation_name                      | NULL
    is_nullable                         | 0
    is_ansi_padded                      | 0
    is_rowguidcol                       | 0
    is_identity                         | 1
    is_filestream                       | 0
    is_replicated                       | 0
    is_non_sql_subscribed               | 0
    is_merge_published                  | 0
    is_dts_replicated                   | 0
    is_xml_document                     | 0
    xml_collection_id                   | 0
    default_object_id                   | 0
    rule_object_id                      | 0
    seed_value                          | 150
    increment_value                     | 10
    last_value                          | 180
    is_not_for_replication              | 0
    is_computed                         | 0
    is_sparse                           | 0
    is_column_set                       | 0
    generated_always_type               | 0
    generated_always_type_desc          | NOT_APPLICABLE
    encryption_type                     | NULL
    encryption_type_desc                | NULL
    encryption_algorithm_name           | NULL
    column_encryption_key_id            | NULL
    column_encryption_key_database_name | NULL
    is_hidden                           | 0
    is_masked                           | 0
    graph_type                          | NULL
    graph_type_desc                     | NULL
    

    これらの列のほとんどは、sys.columnsから継承されます 、ただし、sys.identity columnsに固有のものもあります 。これらの列の詳細については、Microsoftのドキュメントsys.columnsを参照してください。 およびsys.identity columns

    テーブルとスキーマを含む

    これらの例では、結果セットにスキーマが含まれていないことに気付いたかもしれません。スキーマを返す必要がある場合は、ID列を一覧表示するときにテーブルとスキーマを含めるを参照してください。この記事には、結果から内部テーブルを削除する例も含まれています。


    1. 文字列フィールドからMySQLの日付を変換する

    2. SQL Server 2005で複数の行をコンマ区切りのリストに結合するにはどうすればよいですか?

    3. DB内のすべてのスキーマを一覧表示するためのOracleSQLクエリ

    4. VBAでの長い変数値の終わりの検査