sql >> Database >  >> RDS >> Mysql

Hoe de primaire sleutel van de MySQL-tabel automatisch te laten toenemen met een of ander voorvoegsel?

Als je dit echt nodig hebt, kun je je doel bereiken met behulp van een aparte tabel voor sequencing (als je het niet erg vindt) en een trigger.

Tafels

CREATE TABLE table1_seq
(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE table1
(
  id VARCHAR(7) NOT NULL PRIMARY KEY DEFAULT '0', name VARCHAR(30)
);

Nu de trekker

DELIMITER $$
CREATE TRIGGER tg_table1_insert
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
  INSERT INTO table1_seq VALUES (NULL);
  SET NEW.id = CONCAT('LHPL', LPAD(LAST_INSERT_ID(), 3, '0'));
END$$
DELIMITER ;

Dan voeg je gewoon rijen toe aan tabel1

INSERT INTO Table1 (name) 
VALUES ('Jhon'), ('Mark');

En je hebt

|      ID | NAME |
------------------
| LHPL001 | Jhon |
| LHPL002 | Mark |

Hier is SQLFiddle demo



  1. Hoe dubbele rijen in SQL te elimineren

  2. De sortering vinden in SQL Server (T-SQL)

  3. Waarde instellen in afhankelijkheid van Helm-diagram

  4. mysql int als valuta selecteren of int converteren naar valutaformaat?