La siguiente consulta de SQL Server nos reinicia un auto incremental a valor cero, o el valor que pongamos en el tercer parámetro.
DBCC CHECKIDENT ('esquema.tabla', RESEED, 0)
La siguiente consulta nos indica el valor actual del auto incremental. Esto lo podemos utilizar para saber cual va a ser el próximo id al insertar en la tabla. Igualmente, si vamos a insertar, recuerda que no es posible si tiene clave primaria. MSSQL no nos permite escoger que clave primaria poner.
SELECT IDENT_CURRENT('esquema.tabla');
Si queremos eliminar todos los datos de una tabla con auto_increment, mientras que en MySQL podemos hacer un simple truncate, en SQL debemos utilizar el <<no olvides el where en el>> DELETE FROM
DELETE FROM esquema.tabla
DBCC CHECKIDENT ('esquema.tabla', RESEED, 0);
Como podemos comprobar, es mucho mas sencillo hacerlo en MySQL. Usar MSSQL tiene un precio en estas situaciones.
Eliminando funciones y procedimientos
¿Como podemos eliminar un procedimiento o función si existe en SQL Server?
Para ello utilizaremos la función OBJECT_ID() de SQL Server
Esta función admite varios valores pero los que necesitamos son los dos primeros.
OBJECT_ID(‘esquema.tabla’, ‘tipo’)
Dónde el tipo puede ser uno de los siguientes:
- Procedure: “P”
- Función (scalar function) que devuelve un valor – FN
- Función (Inline table valued function) donde devuelve el resultado directamente de una select, sería un paralelo a una vista-> IF
- Función (multi statement table valued function) donde devuelve una tabla pero puede existir mas de una consulta dentro de la función -> TF
- Functión (assembly <clr> table-valued function) función que utiliza una tabla intermedia para devolver valores. -> FT
Ejemplo destruyendo un Procedimiento
IF OBJECT_ID('esquema.tabla', 'P') IS NOT NULL DROP PROCEDURE esquema.tabla;
GO
Ejemplo destruyendo una función
IF OBJECT_ID('esquema.tabla', 'FN') IS NOT NULL DROP FUNCTION esquema.tabla;
GO