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

Autoinkrementacja MySQL na kluczu innym niż podstawowy

Miałem do czynienia z podobnym problemem nienaturalnego porządkowania drzewa kategorii. Jeśli wstawiasz wszystkie wiersze dla jednego identyfikatora naraz, możesz zrobić coś takiego dla każdego subId:

SET @seq = 0;
INSERT INTO test
  (id,  subId,            text) VALUES
  (_id, @seq := @seq + 1, 'Some text')
;

Jeśli chcesz "dodać" wiersz do identyfikatora, możesz ustawić @seq za pomocą

SELECT IFNULL(MAX(subId), 0) INTO @seq FROM test WHERE id = _id;

To oczywiście wymagałoby zarządzania identyfikatorem przez aplikację, a nie przez mySQL.

Możesz zrobić to samo, co ostatni blok kodu, aby uzyskać również następny dostępny identyfikator.



  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 i Matlab

  2. Baza danych — projektowanie tabeli zdarzeń

  3. Longtext odpowiednik MySQL w Microsoft SQL?

  4. Wstawianie wartości domyślnej jako bieżącej daty + 30 dni w MySQL

  5. PHP Mysqli nie zwraca żadnych wierszy, podczas gdy ręczne zapytanie SQL zwraca wyniki