none
Crear ID Consecutivo

    Pregunta

  • Que tal quisiera saber como puedo hacer para crear un ID consecutivo en SQL.

    Mi aplicación que estoy realizando es en ASP.net con VB

    Si tengo el empleado 5,  cuando inserte otro automataticamente le asigne el 6 y asi susesivamente siempre y cuando el usuario no cancele la inserción de este ultimo.

     

    Gracias de antemano,

    jueves, 08 de julio de 2010 16:55

Respuestas

Todas las respuestas

  • Hola,

     

    Yo te recomendaria que en la tabla destino configures la llave como identity y que esta se incremente automaticamente, y en el código de SQL si necesitas saber cual fue el Id asociado a la inserción de la tabla puedes retornar el SCOPE_IDENTITY().

    Por que si generas manualmente el consecutivo, al momento de tener usuarios concurrentes se te puede volver una pesadilla.

     

    Espero te sirva.

    Cualquier cosa comenta.

    jueves, 08 de julio de 2010 17:23
  • Si no es importante que hayan numeros saltados (gaps), entonces puedes usar una columna con propiedad identity.

    create table dbo.T(c1 int not null identity(1, 1) unique, c2 varchar(25);

    insert into dbo.T(c2) values('Oracle'), ('Microsoft'), ('DB2');

    select * from dbo.T;

    cuando usas una columna con propiedad "identity" y se hace un rollback de la transaccion, entonces ese # se pierde y la proxima transaccion que se salve guardara no el sgte al ultimo sino el sgte al ultimo que se trato de usar.

    begin transaction;

    insert into dbo.T(c2) values('DBase III+');

    rollback transaction;

    insert into dbo.T(c2) values('MS Access');

    select * from dbo.T;

    Si no deseas tener estos saltos en la numeracion, entonces deberas crear tu propia rutina para generar el ultimo numero a usar. Puedes tomar ventajas del uso de triggers tipo "instead of", sobre una tabla que almacena el ultimo # generado.

    Puedes leer mas sobre este tema en el capitulo 8 del ultimo libro de Itzik Ben-Gan, sobre T-SQL Programming.

    Inside Microsoft SQL Server 2008: T-SQL Programming

    AMB

    jueves, 08 de julio de 2010 17:43
  • Hola.

    Te propongo un mecanismo más (lo más fácil es usar un campo identity):

    http://qwalgrande.blogspot.es/1271102040/obtencion-de-contador-sin-identity/


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    jueves, 08 de julio de 2010 18:12
    Moderador