MySQL - Como genero un códido único en Java para MySQL

 
Vista:
sin imagen de perfil
Val: 15
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Como genero un códido único en Java para MySQL

Publicado por Renzo (5 intervenciones) el 25/03/2017 15:17:34
Hola compañeros tengo un problema para generar la clave primaria de mi tabla

Tengo una tabla "pacientes" la cual tiene como clave primaria " COD_PACIENTE VARCHAR(10) "
y necesito autogenerar un codigo desde java de esta forma digamos
Para el PRIMER paciente en la base -----------> P00001
Para el SEGUNDO en la base --------------------> P00002
Para el TERCERO paciente en la base --------> P00003

y asi sucesivamente para cada nuevo ingreso de pacientes.

Conste que yo ingreso un nuevo cliente por una interfaz desde JAVA y al darle en OK pues envia el codigo para el MySQL lo inserte

stm.execute("insert into pacientes values ( ,'"+ nombre + "','"+apellido+"','"+dni+"')
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
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Como genero un códido único en Java para MySQL

Publicado por leonardo_josue (414 intervenciones) el 27/03/2017 19:40:10
Hola Renzo:

Aquí vale la pena preguntarte, ¿qué diferencia hay entre que guardes una clave con P00001, P00002, P00003, etc. a que guardes simplemente un consecutivo 1, 2, 3???

Si sólo es por PRESENTACIÓN, entonces estás equivocando de estrategia, ya que puedes almacenar la clave como un campo autoincremental y simplemente hacer el darle el formato de la clave con el formato que quieres... de tal suerte que le dejas el trabajo de administrar estas claves a MySQL y te olvidas por completo de tener que hacer trabajo extra y simplemente envias un null como llave u omites este campo, puedes utilizar la propiedad ZEROFILL para concatenar los ceros a la izquierda que necesites:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> CREATE TABLE Tabla(
    ->    clave INT(5) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT ,
    ->    nombre VARCHAR(30) ,
    ->    dni VARCHAR(30) ,
    ->    PRIMARY KEY (clave)
    ->  );
Query OK, 0 rows affected (0.34 sec)
 
mysql> INSERT INTO tabla (clave, nombre, dni) VALUES (NULL, 'paciente 1', 'one');
Query OK, 1 row affected (0.04 sec)
 
mysql> INSERT INTO tabla (nombre, dni) VALUES ('paciente 2', 'two');
Query OK, 1 row affected (0.03 sec)
 
mysql> SELECT * FROM tabla;
+-------+------------+------+
| clave | nombre     | dni  |
+-------+------------+------+
| 00001 | paciente 1 | one  |
| 00002 | paciente 2 | two  |
+-------+------------+------+
2 rows in set (0.00 sec)

Y si insistes en que la clave de iniciar con P entonces puedes utilizar la función CONCAT

1
2
3
4
5
6
7
8
mysql> SELECT CONCAT('P', clave) clave, nombre, dni FROM tabla;
+--------+------------+------+
| clave  | nombre     | dni  |
+--------+------------+------+
| P00001 | paciente 1 | one  |
| P00002 | paciente 2 | two  |
+--------+------------+------+
2 rows in set (0.00 sec)

Pero aquí no necesitas hacer nada adicional. Si insistes en manejar como tal tu campo llave, entonces debes hacer un procedimiento previo al INSERT para CALCULAR cuál es el último id "numérico" que existe en la tabla y así seleccionar el siguiente, ya sea que primero Consultes con java el dato o ejecutes un TRIGGER o un STORE PROCEDURE para hacer la inserción.

Coméntanos al respecto.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar