sql >> Databáze >  >> RDS >> Sqlserver

Seznam všech sloupců identity v databázi SQL Server:sys.identity_columns

Pomocí T-SQL můžete vrátit seznam sloupců identity v databázi na serveru SQL Server.

Můžete to udělat pomocí sys.identity_columns zobrazení systémového katalogu.

Příklad 1 – Základní použití

Zde je příklad k demonstraci.

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

Výsledek:

+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
| 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                        |
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+

Použil jsem svůj Test databáze pro tento příklad. Vybral jsem si tento, protože jsem dříve vytvořil sloupce identity s různými hodnotami přírůstku seed.

V tomto příkladu jsem použil OBJECT_NAME() funkci získat název objektu z object_id sloupec. V tomto případě je to název tabulky. Jinými slovy, první sloupec uvádí název tabulky a druhý sloupec uvádí sloupec identity.

Příklad 2 – Seznam všech sloupců

V předchozím příkladu jsem vrátil pouze několik sloupců. Důvodem je sys.identity_columns vrátí mnoho sloupců.

V tomto příkladu vrátím pouze jeden sloupec identity (tj. jeden řádek), ale vrátím všechny sloupce pro tento řádek. Při zobrazování výsledků používám vertikální výstup, abyste nebyli nuceni posouvat se do stran.

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

Výsledek (při použití vertikálního výstupu):

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

Většina těchto sloupců je zděděna z sys.columns , ale některé jsou jedinečné pro sys.identity columns . Podrobný popis těchto sloupců naleznete v dokumentaci společnosti Microsoft pro sys.columns a sys.identity columns .

Včetně tabulek a schémat

Možná jste si všimli, že tyto příklady nezahrnují schéma v sadě výsledků. Pokud potřebujete vrátit schéma, viz Včetně tabulek a schémat při výpisu sloupců identity. Tento článek také obsahuje příklad odstranění interních tabulek z výsledků.


  1. Vypočítejte časový rozdíl mezi dvěma řadami

  2. Jaký je rozdíl mezi Views a Materialized Views v Oracle?

  3. Jak změnit typ dat sloupce v SQL Server (T-SQL)

  4. Nejúčinnější způsob vkládání řádků do databáze MySQL