Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Automatisches Inkrement von MySQL auf einem Nicht-Primärschlüssel

Ich hatte ein ähnliches Problem, als ich einen Kategoriebaum auf unnatürliche Weise ordnete. Wenn Sie alle Zeilen für eine ID auf einmal einfügen, könnten Sie so etwas für jede subId tun:

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

Wenn Sie einer ID eine Zeile "hinzufügen" müssen, können Sie @seq mit

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

Dies würde natürlich die Verwaltung der ID durch die Anwendung und nicht durch mySQL erfordern.

Sie können dasselbe wie im letzten Codeblock tun, um auch die nächste verfügbare ID zu erhalten.