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

Devolver la semilla original de una columna de identidad en SQL Server

En SQL Server, puede usar T-SQL IDENT_SEED() para devolver la semilla original de una columna de identidad. Este es el valor semilla original especificado al crear la columna de identidad.

Sintaxis

La sintaxis es así:

IDENT_SEED ( 'table_or_view' )

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

Ejemplo 1:uso básico

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

SELECT IDENT_SEED('Pets') AS Result;

Resultado:

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

En este caso, el valor inicial de identidad es 1.

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

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

Resultado:

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 1      | 101           | 150      |
+--------+---------------+----------+

Cada una de estas tablas se creó con un valor de identidad inicial diferente.

Ejemplo 2:inclusión del esquema

También puede incluir el esquema en el argumento.

SELECT IDENT_SEED('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_SEED(TABLE_SCHEMA + '.' + TABLE_NAME) AS IDENT_SEED  
FROM INFORMATION_SCHEMA.TABLES  
WHERE IDENT_SEED(TABLE_SCHEMA + '.' + TABLE_NAME) IS NOT NULL;

Resultado:

+----------------+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_SEED   |
|----------------+----------------+--------------|
| dbo            | ConstraintTest | 1            |
| dbo            | Event          | 1            |
| dbo            | Scoreboard     | 1            |
| dbo            | Pets           | 1            |
| dbo            | BestFriends    | 101          |
| dbo            | Cities         | 150          |
| dbo            | Colors         | 1            |
+----------------+----------------+--------------+

Acerca del valor devuelto

El valor de retorno para IDENT_SEED() 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.