sql >> Base de Datos >  >> RDS >> Mysql

agregando una especie de columna de incremento automático a una tabla mysql

MySQL no incrementa automáticamente nada más que números enteros. No puede incrementar automáticamente una cadena.

No puede usar un activador para completar una cadena en función del valor de incremento automático. El motivo es que el valor de incremento automático aún no se genera en el momento en que se ejecutan los activadores "antes" y es demasiado tarde para cambiar las columnas en los activadores "después".

Consulte también mi respuesta a https://stackoverflow.com/a/26899091/20860

No puede usar una columna virtual, probablemente por la misma razón.

mysql> create table t (id int(5) zerofill auto_increment primary key, 
    virtcolumn char(8) as (concat('log-', id)));
ERROR 3109 (HY000): Generated column 'virtcolumn' cannot refer to auto-increment column.

Tendrá que dejar que el entero se incremente automáticamente y luego usar ACTUALIZAR para completar su cadena "log-nnnnnn" una vez que se haya realizado la inserción.

CREATE TABLE `t` (
  `id` int(5) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `log` char(9) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `t` () VALUES ();

UPDATE `t` SET `log` = CONCAT('log-', `id`) WHERE `id` = LAST_INSERT_ID();

SELECT * FROM `t`;
+-------+-----------+
| id    | log       |
+-------+-----------+
| 00001 | log-00001 |
+-------+-----------+