SQL Server - IDENTITY COLUMN - HUECOS - IDENTITY GAPS

 
Vista:

IDENTITY COLUMN - HUECOS - IDENTITY GAPS

Publicado por Edgar (13 intervenciones) el 10/09/2007 17:31:00
de ante mano, muchas gracias por al menos leer esto....

bueno, tengo varias tablas en sql server 2005 en las cuales las llaves primaria de cada una de estas trabajan con identity column, es decir, queel codigo se auto incrementa. Yo manejo el error de la siguiente forma:

IF OBJECT_ID ( 'dbo.GuardarMarca', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.GuardarMarca
GO
CREATE PROCEDURE dbo.GuardarMarca
@Nombre text
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO Marca
VALUES (@Nombre)
--COMMIT
END TRY
BEGIN CATCH
--If @@Transaction >0
ROLLBACK
DECLARE @ErrorSeverity INT, @ErrorNumber INT, @ErrorMessage NVARCHAR(4000), @ErrorState INT
SET @ErrorSeverity = ERROR_SEVERITY()
SET @ErrorNumber = ERROR_NUMBER()
SET @ErrorMessage = ERROR_MESSAGE()
SET @ErrorState = ERROR_STATE()
RAISERROR ('ERROR OCCURED:%d', @ErrorSeverity, @ErrorState, @ErrorNumber, @ErrorMessage )
END CATCH
END

pues me funciona bn, el deatlle es que cuando pongo a prueba el proc, con un @nombre de longitud mucho mas larga que la soporta el campo en la tabla, me atrapa el error y no me crea ningun regiustro PERO ME AUMENTA EL CODIGO, si el ultimo era 1 y supuestamente iba a crear el 2, pero se produjo un error. al momento de crear uno y que no genera ningun error me lo almacena con el 3. NO SE que hacer intente con DBCC CHECKIDENT (Marca, RESEED, @UltimoCodigo), y @UltimoCodigo es el resultado de un selct coutn de la tabla y asi deberia funcioanr pero me dice que la funcion DBCC CHECKIDENT no acpeta por parametros una variable....NO SE QUE HACER. No se si me recomiendan trabjar los errores de otra forma o trabjar sin el identity column, y si es asi como se manejarian los errores de forma eficiente....

ESPERO ME AYUDEN GRACIAAAAAAASS!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:IDENTITY COLUMN - HUECOS - IDENTITY GAPS

Publicado por Isaias (3308 intervenciones) el 10/09/2007 18:19:15
No utilices parametros de tipo TEXT, es mejor trabajar con VARCHAR o CHAR, dependiendo de lo que esperes recibir.

Para poder ejecutar el DBCC CHECKIDENT con varibales, utiliza query dinamico.

DECLARE @SQLString NVARCHAR(1000)
SET @SQLString = N'DBCC CHECKIDENT (Marca, RESEED, '+CAST(@UltimoCodigo AS VARCHAR)+')'
EXEC sp_executesql @SQLString
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:IDENTITY COLUMN - HUECOS - IDENTITY GAPS

Publicado por Edgar (13 intervenciones) el 11/09/2007 06:41:51
como decimos en Barranquilla, Colombia....no joda!!! graciaaaasss!! me has ahorrado una cantidad de trabajo...te lo agradezco.....muchas muhcas gracias!!!! TODO FUNCIONO PERFECTO!!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar