zyklisches Autoincrement für jeden Schlüsselwert
Ich habe eine MySQL-Tabelle einiger Datensätze, z.
CREATE TABLE test (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
value varchar NOT NULL
)
Jetzt muss ich eine eindeutige Sequenz von 1, 2, ..., N im PHP-Skript generieren und in einer anderen Tabelle speichern ... Wie kann ich dies erreichen, um thread-sicher zu sein und keine Doubles zu erstellen oder etwas zu überspringen?
Ich habe mich gefragt, ob eine zusätzliche MySQL-Tabelle hilfreich sein könnte, aber ich weiß nicht, wie ich so etwas wie "separate Autoincrements für jeden Spaltenwert" oder etwas anderes erstellen soll ...
test:
1 ... apples
2 ... oranges
3 ... lemons
Einige PHP-Skripte (auf die mehrere Benutzer gleichzeitig zugreifen):
save_next_fruit($_GET['fruit']);
erstellt einen Datensatz in einer anderen Tabelle mit folgenden Werten:
saved_fruit:
ID | FRUIT(FK) | FRUIT_NO
1 1 1
2 1 2
3 2 1
4 3 1
5 3 2
6 1 3
7 3 3
8 2 2
9 1 4
10 2 3
11 1 5
12 2 4
13 1 6
14 3 4
15 3 5
Mit anderen Worten, ich muss dies tun (z. B. für Obst 3 (Zitronen)):
insert into saved_fruit (fruit, fruit_no) values (3, select MAX(fruit_no)+1 from saved_fruit where fruit = 3);
aber auf thread-sichere Weise (ich verstehe, dass der obige Befehl in MyISAM MySQL-Datenbank nicht thread-sicher ist)
Kannst du helfen?
Vielen Dank