sql >> Databáze >  >> RDS >> Mysql

přidání určitého druhu sloupce automatického přírůstku do tabulky mysql

MySQL automaticky nezvyšuje nic jiného než celá čísla. Řetězec nelze automaticky zvýšit.

K naplnění řetězce na základě hodnoty automatického přírůstku nelze použít spouštěč. Důvodem je, že hodnota automatického přírůstku se ještě nevygeneruje v době „před“ spuštěním spouštěčů a na změnu sloupců ve spouštěčích „po“ je příliš pozdě.

Viz také moje odpověď na https://stackoverflow.com/a/26899091/20860

Nemůžete použít virtuální sloupec, pravděpodobně ze stejného důvodu.

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.

Budete muset nechat celé číslo automaticky zvýšit a poté použít UPDATE k naplnění řetězce "log-nnnnnn" po dokončení vložení.

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. Nelze volat uloženou proceduru Oracle z Tvůrce sestav SSRS 3.0

  2. PL/SQL Jak získat před X dnem datum jako datum?

  3. Najděte rozdíl mezi časovými razítky v sekundách v PostgreSQL pomocí JOOQ

  4. Výsledky SQL skupiny podle měsíce