Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/02/2016, 07:46
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: crear campo con prefijo increment

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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)