hola gente, necesito generar códigos primari key auto_increment tipo 00001,00002,00003.....u otro tipo como proy01,proy02, proy03.... y mostrarlos a los usuarios para que identifiquen a que tipo de proyecto de investigacion pertenecen, porf si alguien podria ayudarme

generar códigos primari key auto_increment tipo 00001,00002,00003
Comenzado por
caac
, ene 13 2014 03:57
4 respuestas en este tema
#1
Escrito 13 enero 2014 - 03:57
#2
Escrito 13 enero 2014 - 04:19
Compañero, he editado el título del mensaje pues no es para nada intuitivo. ´
Saludos
Saludos
#3
Escrito 14 enero 2014 - 07:00
No hay forma directa con el motor de base de datos.
Tendrias que hacerlo con tu codigo PHP, suponiendo que tienes un autoincrement normal (1,2,3,4,5,6... 999, 1000, 1001)
utilzamos strlen para calcular
Al final quedaria algo como 00006.
Esto es solo una idea amigo, se me ocurren 3 procesos.
1. Dejar el autoincrement, y hacer el proceso que te mencione cada vez que se necesite.
Problema: Es que debes de hacer este proceso cada vez que quieras buscar o hacer algo con los registros para que el usuario lo vea asi.
2. Contar la cantidad de registros, y apartir de eso generar un ID como 0XXXX (aqui ya no seria autoincrement)
Problema: debes hacer un lock table para que no se registren multiples ID similares.
3. Crear un Stored Procedure, para que el motor de base de datos lo genere los ID como los deseas.
Mi recomendación es, comprobar que tipo de dato se va a manejar en laparte del back-end y en el front-end, mostrar "proy01" como ID tiene muchas formas de solucionarse.
Cuando tengas problemas con codigo qu hayas creado, estamos aqui para ayudarte.
Saludos
Tendrias que hacerlo con tu codigo PHP, suponiendo que tienes un autoincrement normal (1,2,3,4,5,6... 999, 1000, 1001)
utilzamos strlen para calcular
delphi
$id = "6"; //Notese que es un string $cantidadDigito = strlen($id); $numCerosMaximo = 5; //es como decir 00000 for($i = $cantidadDigito; $i < 5; $i++){ $id = "0".$id; }
Al final quedaria algo como 00006.
Esto es solo una idea amigo, se me ocurren 3 procesos.
1. Dejar el autoincrement, y hacer el proceso que te mencione cada vez que se necesite.
Problema: Es que debes de hacer este proceso cada vez que quieras buscar o hacer algo con los registros para que el usuario lo vea asi.
2. Contar la cantidad de registros, y apartir de eso generar un ID como 0XXXX (aqui ya no seria autoincrement)
Problema: debes hacer un lock table para que no se registren multiples ID similares.
3. Crear un Stored Procedure, para que el motor de base de datos lo genere los ID como los deseas.
Mi recomendación es, comprobar que tipo de dato se va a manejar en laparte del back-end y en el front-end, mostrar "proy01" como ID tiene muchas formas de solucionarse.
Cuando tengas problemas con codigo qu hayas creado, estamos aqui para ayudarte.
Saludos

#4
Escrito 30 enero 2014 - 11:09
Hola amigo,
Lo que pides para una base de datos en MySql seria algo asi:
Para la segunda opcion que requieres de proy01,proy02, etc, no te recomiendo utilizar strings como llaves primarias. lo que se me ocurre es que puedes hacer una catalogo de proyectos y hay pongas los proyectos de los que dispones y los mandes a traer en donde requieras como llave foranea
Saludos
Lo que pides para una base de datos en MySql seria algo asi:
delphi
CREATE TABLE `bd`.`new_table` ( `idnew_table` INT ZEROFILL NOT NULL AUTO_INCREMENT , `new_tablecol` VARCHAR(45) NULL , PRIMARY KEY (`idnew_table`) ); INSERT INTO `bd`.`new_table` (`new_tablecol`) VALUES ('valor 1'); INSERT INTO `bd`.`new_table` (`new_tablecol`) VALUES ('valor 2'); INSERT INTO `bd`.`new_table` (`new_tablecol`) VALUES ('valor 3');
Para la segunda opcion que requieres de proy01,proy02, etc, no te recomiendo utilizar strings como llaves primarias. lo que se me ocurre es que puedes hacer una catalogo de proyectos y hay pongas los proyectos de los que dispones y los mandes a traer en donde requieras como llave foranea
Saludos
#5
Escrito 07 febrero 2014 - 12:16
Hala buenos Tardes nos se si es muy tarde para tu pregunta te envió esta código que creo que es lo que buscas
php