problemas con un campo campo identity

11/04/2005 - 15:17 por Mauro | Informe spam
la situacion es la siguiente, tengo una tabla que posee 2 campos uno es la
clave primaria, que es identity e incrementa de a 1 en 1
el segundo campo es un string variable de long 20 que no es identity pero si
tiene un indice unique para que no se repita,
ahora el problema es el siguiente:

El primer campo aparte de ser el campo de clave es un campo de control, es
decir que se usa para comprobar si se borraron datos de la tabla , por lo
que en una situacion normal no debe haber huecos en la tabla , es decir si
encontramos 1.2.3.4.6 significa que alguien borro el registro 5 .
Ahora cuando alguien intenta ingresar un valor en el segundo campo y este ya
existe, ohh sorpresa!! el valor de la clave primaria aumenta por mas que el
registro no se haya insertado.

alguien conoce alguna forma de hacer que esto no suceda???

desde ya muchas gracias!!!!

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
11/04/2005 - 15:45 | Informe spam
Mauro,

Asumir lo siguiente:

El primer campo aparte de ser el campo de clave es un campo de control, es
decir que se usa para comprobar si se borraron datos de la tabla , por lo
que en una situacion normal no debe haber huecos en la tabla , es decir si
encontramos 1.2.3.4.6 significa que alguien borro el registro 5 .



no es correcto. El valor de la columna identity se incrementa aunque la
transaccion haya fallado, esa es la forma como trabaja SQL Server. Pudieras
simular el autoincremento:

Cómo trabajar con Auto Numéricos
http://www.microsoft.com/spanish/ms...art187.asp

o pudieras crear un trigger "for delete" para guardar informacion sobre
filas borradas en otra tabla.

Cómo hacer un Control de Auditoría con Triggers
http://www.microsoft.com/spanish/ms...art168.asp


AMB

"Mauro" wrote:

la situacion es la siguiente, tengo una tabla que posee 2 campos uno es la
clave primaria, que es identity e incrementa de a 1 en 1
el segundo campo es un string variable de long 20 que no es identity pero si
tiene un indice unique para que no se repita,
ahora el problema es el siguiente:

El primer campo aparte de ser el campo de clave es un campo de control, es
decir que se usa para comprobar si se borraron datos de la tabla , por lo
que en una situacion normal no debe haber huecos en la tabla , es decir si
encontramos 1.2.3.4.6 significa que alguien borro el registro 5 .
Ahora cuando alguien intenta ingresar un valor en el segundo campo y este ya
existe, ohh sorpresa!! el valor de la clave primaria aumenta por mas que el
registro no se haya insertado.

alguien conoce alguna forma de hacer que esto no suceda???

desde ya muchas gracias!!!!



Respuesta Responder a este mensaje
#2 Mauro
11/04/2005 - 17:57 | Informe spam
Gracias , me gusto la primera alternativa si no queda otra voy a
implementarla
saludos
"Alejandro Mesa" wrote in message
news:
Mauro,

Asumir lo siguiente:

> El primer campo aparte de ser el campo de clave es un campo de control,


es
> decir que se usa para comprobar si se borraron datos de la tabla , por


lo
> que en una situacion normal no debe haber huecos en la tabla , es decir


si
> encontramos 1.2.3.4.6 significa que alguien borro el registro 5 .

no es correcto. El valor de la columna identity se incrementa aunque la
transaccion haya fallado, esa es la forma como trabaja SQL Server.


Pudieras
simular el autoincremento:

Cómo trabajar con Auto Numéricos
http://www.microsoft.com/spanish/ms...art187.asp

o pudieras crear un trigger "for delete" para guardar informacion sobre
filas borradas en otra tabla.

Cómo hacer un Control de Auditoría con Triggers
http://www.microsoft.com/spanish/ms...art168.asp


AMB

"Mauro" wrote:

> la situacion es la siguiente, tengo una tabla que posee 2 campos uno es


la
> clave primaria, que es identity e incrementa de a 1 en 1
> el segundo campo es un string variable de long 20 que no es identity


pero si
> tiene un indice unique para que no se repita,
> ahora el problema es el siguiente:
>
> El primer campo aparte de ser el campo de clave es un campo de control,


es
> decir que se usa para comprobar si se borraron datos de la tabla , por


lo
> que en una situacion normal no debe haber huecos en la tabla , es decir


si
> encontramos 1.2.3.4.6 significa que alguien borro el registro 5 .
> Ahora cuando alguien intenta ingresar un valor en el segundo campo y


este ya
> existe, ohh sorpresa!! el valor de la clave primaria aumenta por mas que


el
> registro no se haya insertado.
>
> alguien conoce alguna forma de hacer que esto no suceda???
>
> desde ya muchas gracias!!!!
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida