Puede usar T-SQL para devolver una lista de columnas de identidad en una base de datos en SQL Server.
Puede hacer esto usando sys.identity_columns
vista del catálogo del sistema.
Ejemplo 1:uso básico
Aquí hay un ejemplo para demostrarlo.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Resultado:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | 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 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Usé mi Test
base de datos para este ejemplo. Elegí este porque previamente creé columnas de identidad con varios valores de incremento inicial.
En este ejemplo utilicé OBJECT_NAME()
función para obtener el nombre del objeto del object_id
columna. En este caso es el nombre de la tabla. En otras palabras, la primera columna enumera el nombre de la tabla y la segunda columna enumera la columna de identidad.
Ejemplo 2:lista de todas las columnas
En el ejemplo anterior, solo devolví un puñado de columnas. Esto se debe a que sys.identity_columns
devuelve muchas columnas.
En este ejemplo, devuelvo solo una columna de identidad (es decir, una fila), pero devuelvo todas las columnas para esa fila. Uso la salida vertical cuando muestro los resultados para que no te veas obligado a desplazarte hacia los lados.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Resultado (usando salida vertical):
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
La mayoría de estas columnas se heredan de sys.columns
, pero algunos son exclusivos de las sys.identity columns
. Para obtener una descripción detallada de estas columnas, consulte la documentación de Microsoft para sys.columns
y sys.identity columns
.
Incluyendo tablas y esquemas
Es posible que haya notado que estos ejemplos no incluyen el esquema en el conjunto de resultados. Consulte Incluir tablas y esquemas al enumerar las columnas de identidad si necesita devolver el esquema. Ese artículo también incluye un ejemplo de eliminación de tablas internas de los resultados.