sql >> Databasteknik >  >> RDS >> Sqlserver

Lista alla identitetskolumner i en SQL Server-databas:sys.identity_columns

Du kan använda T-SQL för att returnera en lista med identitetskolumner i en databas i SQL Server.

Du kan göra detta med hjälp av sys.identity_columns systemkatalogvy.

Exempel 1 – Grundläggande användning

Här är ett exempel att visa.

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

Resultat:

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

Jag använde mitt Test databas för detta exempel. Jag valde den här eftersom jag tidigare har skapat identitetskolumner med olika fröökningsvärden.

I det här exemplet använde jag OBJECT_NAME() funktion för att hämta objektets namn från object_id kolumn. I det här fallet är det tabellnamnet. Så med andra ord, den första kolumnen visar tabellnamnet, och den andra kolumnen visar identitetskolumnen.

Exempel 2 – Lista alla kolumner

I det föregående exemplet returnerade jag bara en handfull kolumner. Detta beror på att sys.identity_columns returnerar många kolumner.

I det här exemplet returnerar jag bara en identitetskolumn (dvs en rad), men jag returnerar alla kolumner för den raden. Jag använder vertikal utmatning när jag visar resultaten så att du inte tvingas rulla i sidled.

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

Resultat (med vertikal utdata):

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

De flesta av dessa kolumner ärvs från sys.columns , men vissa är unika för sys.identity columns . För en detaljerad beskrivning av dessa kolumner, se Microsofts dokumentation för sys.columns och sys.identity columns .

Inklusive tabeller och scheman

Du kanske har märkt att dessa exempel inte inkluderar schemat i resultatuppsättningen. Se Inkludera tabeller och scheman när du listar identitetskolumnerna om du behöver returnera schemat. Den artikeln innehåller också ett exempel på att ta bort interna tabeller från resultaten.


  1. Hur man anger en flik i en postgres front-end COPY

  2. Oracle SQL :tidsstämplar i where-satsen

  3. Guide till designdatabas för kalenderhändelse och påminnelse i MySQL

  4. Hur man ansluter en databas med en Amazon VPC