Consulta

Publicado en 'Programación' por Raise, 24 Jun 2015.





  1. Raise

    Raise Miembro nuevo

    Registro:
    13 May 2014
    Mensajes:
    21
    Likes:
    1




    Buenas noches, me gustaría que me ayudaran con un tema.

    Pongamos que tengo una web que guarda transacciones e identificará cada transacción
    con un código, el cual será ascendente conforme se vayan ingresado. No quiero que el tipo de dato
    del código en la base de datos sea autonumérico.

    La página es JSP, la programación en java y la base de datos es mysql.

    Saludos.
     


  2. emartinez

    emartinez Miembro de bronce

    Registro:
    27 May 2012
    Mensajes:
    2,437
    Likes:
    798
    Osea quieres que por ejemplo la trx1 tenga codigo 3842 y luego la trx2 codigo 8179 y asi cada trx cuente con diferentes codigos aleatorios? No suena tan dificil...
     
  3. Raise

    Raise Miembro nuevo

    Registro:
    13 May 2014
    Mensajes:
    21
    Likes:
    1
    No, quiero que la trx tenga un código X y que trx2 sea X+1

    El problema es asignarle un valor, si ejecutas una vez y empiezas a guardar transacciones de X a X+3 (por poner un ejemplo) sería lo más normal pero si vuelves a ejecutar el programa te va a volver a mandar a X, cuando en realidad quiero que mande X+4.

    ¿Me dejo entender? xD
     
  4. FerLethal

    FerLethal Miembro maestro

    Registro:
    10 Feb 2014
    Mensajes:
    456
    Likes:
    45
    No sé si te entendí bien, pero lo que haría sería crear un sequence para la tabla y crear un trigger before insert que obtendrá el siguiente valor para el código y lo usará para el código de la transacción.
     
  5. gnox

    gnox Miembro maestro

    Registro:
    3 Ene 2013
    Mensajes:
    793
    Likes:
    252
    Como dice arriba FerLethal lo mas optimo seria via un trigger, ya que de la forma que lo quieres tienes que encargarte de todo lo que es la generacion del codigo + secuencia y el momento de generarla, lo mas probable es que caigas en una tabla helper con 2 campos ,si el codigo no es unico: codigo, ultnum , si es unico seria solo el campo ultnum y seleccionas el mayor y le agregas 1, el problema es el momento en que se genera para evitar problema de concurrencia (varios usuarios usando el mismo código) tienes que asegurarte que no bloquee la generación por eso un trigger en un insert cuando el usuario termino es lo mas optimo.
     
  6. Raise

    Raise Miembro nuevo

    Registro:
    13 May 2014
    Mensajes:
    21
    Likes:
    1
    Gracias por su ayuda.
     
    A FerLethal le gustó este mensaje.