Mysql
 sql >> база данни >  >> RDS >> Mysql

добавяне на вид колона за автоматично нарастване към mysql таблица

MySQL не увеличава автоматично нищо друго освен цели числа. Не можете автоматично да увеличавате низ.

Не можете да използвате тригер за попълване на низ въз основа на стойността за автоматично нарастване. Причината е, че стойността за автоматично нарастване все още не е генерирана по време на изпълнението на тригерите „преди“ и е твърде късно да се променят колоните в тригерите „след“.

Вижте също моя отговор на https://stackoverflow.com/a/26899091/20860

Вероятно поради същата причина не можете да използвате виртуална колона.

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.

Ще трябва да позволите на цялото число да се увеличава автоматично и след това да използвате UPDATE, за да попълните своя низ "log-nnnnnn", след като вмъкването приключи.

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. сортиране на йерархично групиране на mySQL

  2. MySQL индексиране и използване на сортиране на файлове

  3. как да качите няколко изображения в папка с помощта на jsp и сървлет

  4. Стартиране на Galera Cluster на Kubernetes

  5. И така, какъв е най-добрият начин да проверите дали ред съществува? СЪЩЕСТВУВА, БРОЙ или num_rows?