sql >> Database >  >> RDS >> Mysql

een soort auto-increment-kolom toevoegen aan een mysql-tabel

MySQL verhoogt niets automatisch behalve gehele getallen. U kunt een tekenreeks niet automatisch verhogen.

U kunt geen trigger gebruiken om een ​​tekenreeks te vullen op basis van de waarde voor automatisch verhogen. De reden is dat de waarde voor automatisch verhogen nog niet is gegenereerd op het moment dat "voor" triggers worden uitgevoerd, en het te laat is om kolommen in "na" triggers te wijzigen.

Zie ook mijn antwoord op https://stackoverflow.com/a/26899091/20860

U kunt waarschijnlijk om dezelfde reden geen virtuele kolom gebruiken.

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.

U moet het gehele getal automatisch laten toenemen en vervolgens UPDATE gebruiken om uw "log-nnnnnn"-tekenreeks in te vullen nadat het invoegen is voltooid.

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 |
+-------+-----------+



  1. een database opzetten om bij te houden welke gebruikers op welke links hebben geklikt?

  2. Sequelize leest datetime alleen in UTC

  3. Rijen tellen voor een tabel in MySQL?

  4. scheidingstekens in MySQL