Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/02/2016, 08:59
ZedGe1505
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 6 meses
Puntos: 15
Respuesta: crear campo con prefijo increment

Ojo que esta opción solo resulta si tu código, en especial el número, está asociado al id AI. Si el ID esta asociado a otro proceso o a otro dato no se podría realizar la solución.



Cita:
Iniciado por gnzsoloyo Ver Mensaje
Vamos a ver si se entiende la idea que te exponemos:

Creamos la tabla de ejemplo.
Código MySQL:
Ver original
  1. mysql> DROP TABLE IF EXISTS agenda_cliente;
  2. Query OK, 0 rows affected (0.05 sec)
  3.  
  4. mysql> CREATE TABLE IF NOT EXISTS agenda_cliente(
  5.     ->     id_cliente INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  6.     ->     codigo VARCHAR(10) NOT NULL,
  7.     ->     nombre VARCHAR(50) NOT NULL,
  8.     ->     apellidos VARCHAR(50) NOT NULL,
  9.     ->     telefono VARCHAR(15) NULL
  10.     ->     ) ENGINE=INNODB;
  11. Query OK, 0 rows affected (0.16 sec)
Notarás que he cambiado el nombre del campo ID por algo mas identificador, la "longitud" qu e pusiste en el INT y que no sirve para nada, por el valor por default, pero UNSIGNED, y lo declaro AI y PK.
Tambien que cambié el tipo de dato de telefono por VARCHAR. Esto es por algo que tal vez tu no sepas, pero el tipo de dato usado para los telefonos es siempre varchar. Trabajo en interfases de datos de una empresa de telefonia celular, te lo digo con conocimiento de causa. Hay razones técnicas para hacerlo asi.

Luego insertamos datos imaginarios:
Código MySQL:
Ver original
  1. mysql> INSERT INTO agenda_cliente (codigo, nombre, apellidos, telefono)
  2.     -> VALUES ('DBA', 'Luis', 'Sanchez', '1154545454'),
  3.     ->  ('DBA', 'Luis', 'Sanchez', '1221122121'),
  4.     ->  ('AST', 'Alicia', 'Fahon', '3232323232'),
  5.     ->  ('AST', 'Roxana', 'Kramer', '5454545454'),
  6.     ->  ('DBA', 'Federico', 'Filis', '9823571698'),
  7.     ->  ('FRA', 'Nestor', 'Domec', '6598953265');
  8. Query OK, 6 rows affected (0.01 sec)
  9. Records: 6  Duplicates: 0  Warnings: 0

Y finalmente probamos:
Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->     CONCAT(codigo, LPAD(id_cliente, 8, '0')) codigo,
  3.     ->     apellidos,
  4.     ->     telefono
  5.     -> FROM
  6.     ->     agenda_cliente;
  7. +-------------+-----------+------------+
  8. | codigo      | apellidos | telefono   |
  9. +-------------+-----------+------------+
  10. | DBA00000001 | Sanchez   | 1154545454 |
  11. | DBA00000002 | Sanchez   | 1221122121 |
  12. | AST00000003 | Fahon     | 3232323232 |
  13. | AST00000004 | Kramer    | 5454545454 |
  14. | DBA00000005 | Filis     | 9823571698 |
  15. | FRA00000006 | Domec     | 6598953265 |
  16. +-------------+-----------+------------+
  17. 6 rows in set (0.00 sec)
LPAD() rellena a izquierda el caracter que le digas. RPAD hace exactamente lo contrario.