sql >> Database >  >> RDS >> Mysql

Hoe de volgende alfanumerieke ID te krijgen op basis van bestaande waarde van MySQL

Als u MyISAM gebruikt, kunt u een samengestelde primaire sleutel maken op een tekstveld + auto-incrementveld. MySQL zal het aantal automatisch verhogen. Het zijn afzonderlijke velden, maar u kunt hetzelfde effect krijgen.

CREATE TABLE example (
company_name varchar(100),
key_prefix char(4) not null,
key_increment int unsigned auto_increment,
primary key co_key (key_prefix,key_increment)
) ENGINE=MYISAM;

Wanneer u een invoeging in de tabel doet, wordt de key_increment veld wordt verhoogd op basis van de hoogste waarde op basis van key_prefix . Dus invoegen met key_prefix "smit" begint met 1 in key_inrement , key_prefix "jone" begint met 1 in key_inrement , enz.

Voordelen:

  • Je hoeft niets te doen met het berekenen van getallen.

Nadelen:

  • Je hebt wel een sleutel verdeeld over 2 kolommen.
  • Het werkt niet met InnoDB.


  1. Hoe u uw MySQL- of MariaDB-database kunt beschermen tegen SQL-injectie:deel twee

  2. Het optimaliseren van een SELECT-query die langzaam draait op Oracle die snel draait op SQL Server

  3. Waarom zou je PostgreSQL leren?

  4. Hoe dynamische kolomnamen te gebruiken in een UPDATE- of SELECT-instructie in een functie?