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

Jak sprawić, by klucz podstawowy tabeli MySQL był automatycznie zwiększany z pewnym prefiksem?

Jeśli naprawdę tego potrzebujesz, możesz osiągnąć swój cel za pomocą oddzielnej tabeli do sekwencjonowania (jeśli nie masz nic przeciwko) i wyzwalacza.

Stoły

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)
);

Teraz wyzwalacz

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 ;

Następnie po prostu wstawiasz wiersze do tabeli1

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

I będziesz miał

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

Oto SQLFiddle demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Na zduplikowanym kluczu zignorować?

  2. Jak ustawić maksymalny czas wykonania zapytania mysql?

  3. Jak przeprowadzić migrację MySQL z Amazon EC2 do lokalnego centrum danych bez przestojów?

  4. Uruchamianie plików MySQL *.sql w PHP

  5. Pełne przywracanie klastra MySQL lub MariaDB Galera z kopii zapasowej