sql >> Base de Datos >  >> RDS >> Sqlserver

Devuelve el valor de incremento de una columna de identidad en SQL Server

En SQL Server, puede usar T-SQL IDENT_INCR() función para devolver el valor de incremento de una columna de identidad. Este es el valor de incremento especificado al crear la columna de identidad.

Sintaxis

La sintaxis es así:

IDENT_INCR ( 'table_or_view' )

La tabla_o_vista argumento es una expresión que especifica la tabla o vista para verificar un valor de incremento de identidad válido.

Ejemplo 1:uso básico

Aquí hay un ejemplo de código básico.

SELECT IDENT_INCR('Pets') AS Result;

Resultado:

+----------+
| Result   |
|----------|
| 1        |
+----------+

En este caso, el valor del incremento de identidad es 1.

Aquí hay otra consulta que verifica más tablas.

SELECT 
  IDENT_INCR('Pets') AS Pets,
  IDENT_INCR('BestFriends') AS BestFriends,
  IDENT_INCR('Cities') AS Cities;

Resultado:

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 1      | 10            | 10       |
+--------+---------------+----------+

Ejemplo 2:inclusión del esquema

También puede incluir el esquema en el argumento.

SELECT IDENT_INCR('dbo.Pets') AS Result;

Resultado:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Ejemplo 3:comprobar todas las tablas de la base de datos

Este es un ejemplo de verificación de todas las tablas en la base de datos para su valor inicial de identidad.

SELECT 
  TABLE_SCHEMA, 
  TABLE_NAME,   
  IDENT_INCR(TABLE_SCHEMA + '.' + TABLE_NAME) AS IDENT_INCR  
FROM INFORMATION_SCHEMA.TABLES  
WHERE IDENT_INCR(TABLE_SCHEMA + '.' + TABLE_NAME) IS NOT NULL;

Resultado:

+----------------+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_INCR   |
|----------------+----------------+--------------|
| dbo            | ConstraintTest | 1            |
| dbo            | Event          | 1            |
| dbo            | Scoreboard     | 1            |
| dbo            | Pets           | 1            |
| dbo            | BestFriends    | 10           |
| dbo            | Cities         | 10           |
| dbo            | Colors         | 1            |
+----------------+----------------+--------------+

Acerca del valor de retorno

El valor de retorno para IDENT_INCR() es numeric(@@MAXPRECISION,0)) . Esto significa que es un tipo de dato numérico con una precisión y escala fijas.

La precisión depende del servidor. El @@MAXPRECISION El argumento devuelve el nivel utilizado por los tipos de datos numéricos y decimales tal como se establece actualmente en el servidor. La precisión especifica el número total máximo de dígitos decimales (incluye los del lado izquierdo y derecho del punto decimal).

El segundo argumento especifica una escala de 0 , lo que significa que no hay dígitos decimales a la derecha del lugar decimal.

Puede ejecutar la siguiente consulta para encontrar el nivel de precisión establecido actualmente en su servidor:

SELECT @@MAX_PRECISION AS [Max Precision];

Aquí está el resultado en mi sistema:

+-----------------+
| Max Precision   |
|-----------------|
| 38              |
+-----------------+

Crear una columna de identidad

Puede crear una columna de identidad usando IDENTITY() propiedad en su CREATE TABLE o ALTER TABLE declaración.

Otra forma de crear una columna de identidad es IDENTITY() función. Esto le permite crear una columna de identidad cuando usa un SELECT INTO declaración para transferir datos de una fuente a otra.