Hola summerblack:
Vayamos por partes... Si se trata de un campo que puedas calcular a través de la información que tienes en tu tabla en realidad no hay necesidad de tener físicamente el campo en la tabla... al momento de hacer un select puedes recuperar la información que necesitas, utilizando la función CONCAT para formar el campo. Checa este script:
Código MySQL:
Ver original+----+--------+-------------+---------------------+
| id | numero | ciudad | fecha |
+----+--------+-------------+---------------------+
| 1 | 12 | MADRID | 2013-03-19 11:17:48 |
| 2 | 1 | BARCELONA | 2013-03-19 11:17:48 |
| 3 | 5 | MEXICO | 2013-03-19 11:17:48 |
| 4 | 11 | GUADALAJARA | 2013-03-19 11:17:48 |
| 5 | 24 | ATLANTA | 2013-03-19 11:17:48 |
| 6 | 12 | LA PAZ | 2013-03-19 11:17:48 |
+----+--------+-------------+---------------------+
-> id, numero, ciudad,
+----+--------+-------------+-----------+
| id | numero | ciudad | calculado |
+----+--------+-------------+-----------+
| 1 | 12 | MADRID | TMADR12 |
| 2 | 1 | BARCELONA | TBARC1 |
| 3 | 5 | MEXICO | TMEXI5 |
| 4 | 11 | GUADALAJARA | TGUAD11 |
| 5 | 24 | ATLANTA | TATLA24 |
| 6 | 12 | LA PAZ | TLA P12 |
+----+--------+-------------+-----------+
Observa el último caso, lo puse a propósito, la función substring considera el espacio como una posición más, por lo tanto cuando en el nombre de la ciudad existan espacios en las primeras cuatro posiciones apareceran en la clave... podrías eliminarlos de la clave, pero eso depende de tu lógica de negocio.
Saludos
Leo.