none
recuperar identificador generado por trigger RRS feed

  • Pregunta

  • Buenas tardes,

    He visto como recuperar el identificador autonumerico de una tabla, pero mi consulta es si se puede recuperar de la misma forma un identificador generado por un trigger. Este identificador es un numero incremental que se genera en funcion de otro campo por ejemplo la id de una sucursal, en este caso cada sucursal tendria su propio correlativo como en este pequeño ejemplo:

    id_sucursal id_fac
    1 1
    1 2
    2 1
    2 2
    1 3
    2 3

      esta numeración la genero con un trigger (no conozco otra manera) y quisiera recuperar esta numeración en la misma consulta de inserción, es esto posible??, utilizo sql server 2005 y visual basic 2008.

    Gracias.

    • Cambiado Enrique M. Montejo miércoles, 3 de diciembre de 2014 7:52 Pregunta relacionada con el acceso a datos.
    jueves, 27 de noviembre de 2014 20:53

Todas las respuestas

  • DECLARE @OutputTbl TABLE (id_sucursal INT, id_fac INT)
    
    INSERT INTO MyTable(id_sucursa, id_fac , DIRECCION, TELEFONO, ...)
    OUTPUT INSERTED.id_sucursal,INSERTED.id_fac  INTO @OutputTbl(id_sucursa, id_fac )
    VALUES (3, 4, 'Address Stuff', '1112223333', ....)

    puede usar una tabla temporal o una tabla real o lo que guste

    en el ejemplo anterior cada vez que hagas un insert se guardaran los datos de los id usted puede adaptar a tu gusto

    Saludos


    G. Poliovei

    jueves, 27 de noviembre de 2014 21:46
  • George, gracias por responder, por lo que entiendo de tu ejemplo y perdon si me equivoco (no soy muy entendido en el tema), al hacer un insert en "MyTable" se guardaran en la tabla "@OutputTbl" los id insertados. Lo que deseo hacer es que al insertar un registro, la consulta me devuelva el id generado algo como esto: 

    INSERT INTO Contactos (NombreCompleto
    ,Direccion
    ,FechaNacimiento)
    VALUES (@Nombre,
    @Direccion,
    @FechaNacimiento)
    SELECT SCOPE_IDENTITY()

    Pero en lugar del SCOPE_IDENTITY() me devuelva el id generado por el trigger.

    Gracias por tu tiempo.

     

    martes, 2 de diciembre de 2014 13:32