Mysql
 sql >> Baza danych >  >> RDS >> Mysql

dodanie rodzaju kolumny auto inkrementacji do tabeli mysql

MySQL nie zwiększa automatycznie niczego poza liczbami całkowitymi. Nie możesz automatycznie zwiększać ciągu.

Nie możesz użyć wyzwalacza do wypełnienia ciągu na podstawie wartości automatycznego przyrostu. Powodem jest to, że wartość automatycznego przyrostu nie jest jeszcze generowana w momencie wykonania wyzwalaczy „przed” i jest za późno na zmianę kolumn w wyzwalaczach „po”.

Zobacz także moją odpowiedź na https://stackoverflow.com/a/26899091/20860

Nie możesz użyć kolumny wirtualnej, prawdopodobnie z tego samego powodu.

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.

Będziesz musiał pozwolić na automatyczne zwiększanie liczby całkowitej, a następnie użyć UPDATE do wypełnienia ciągu „log-nnnnnn” po zakończeniu wstawiania.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalacz MySql, zaktualizuj inną tabelę podczas wstawiania

  2. MySQL:IF tabela istnieje, skróć i wstaw ELSE utwórz

  3. Monitorowanie bazy danych — rozwiązywanie problemów z Prometheusem za pomocą pulpitów nawigacyjnych SCUMM

  4. MySQL from_unixtime po 2038-01-19?

  5. Czy jest jakiś sposób na wychwycenie błędów MySQL i baz danych w PHP?