martes, 22 de julio de 2014

SQL Server: Resetear valor en columna Identity

En ciertas ocasiones nos puede interesar

resetear el valor de una columna identity

, por ejemplo, si estamos trabajando en un entorno de preproducción y estamos haciendo pruebas de cargas; tras hacer una inserción de N filas las podemos eliminar pero nos interesaría también

resetear el valor de la columna identity

. La instrucción DBCC CHECKIDENT nos permite

resetear el valor de una columna identity

, veamos algunos ejemplos:

-- La siguiente instrucción nos devuelve el valor de la columna identity de la tabla indicada
DBCC CHECKIDENT ('TableName', NORESEED)

-- Devolverá el mensaje siguiente donde 'n' es el valor actual del identity:
-- Comprobación de información de identidad: valor de identidad actual 'n', 
-- valor de columna actual 'n'.
-- Ejecución de DBCC completada. Si hay mensajes de error, consulte al administrador del sistema.

-- Si queremos que en el próximo INSERT el valor de la columna identity sea 1 utilizaremos:
DBCC CHECKIDENT ('TableName', RESEED, 0)

-- En general si queremos que en el próximo INSERT el valor de la columna identity sea n 
-- utilizaremos la instrucción:
DBCC CHECKIDENT ('TableName', RESEED, n-1)

Es importante el utilizar ' ' (comillas simples) en el parámetro TableName; si simplemente especificamos el nombre de la tabla no habrá problemas aunque no usemos las comillas simples pero si trabajamos con esquemas o referenciamos una base de datos es obligatorio el uso de ellas, veamos algunos ejemplos:

-- Esta instrucción se ejecutaría sin problemas
DBCC CHECKIDENT (Tablename, NORESEED)

-- Esta instrucción dará el error:
-- Sintaxis incorrecta cerca de '.'.
DBCC CHECKIDENT (DatabaseName.dbo.TableName, NORESEED)

-- La correcta sería
DBCC CHECKIDENT ('DatabaseName.dbo.TableName', NORESEED)

-- También daría el mismo error
DBCC CHECKIDENT (SchemaName.TableName, NORESEED)

-- La correcta sería
DBCC CHECKIDENT ('SchemaName.TableName', NORESEED)

Y hasta aquí el artículo de hoy, breve pero espero que útil; recordad que dentro de

areaTIC

podéis encontrar otros artículos interesantes, no dudéis en consultar nuestro archivo, también podéis seguirnos por RSS o las principales redes sociales (twitter, facebook, linkedin...).


LECTURAS RELACIONADAS RECOMENDADAS POR AREATIC.NET