Däremot kan du konstruera en egen rutin som utformar ett löpnummer enligt dina önskemål.
Förslagsvis kan du lagra nästkommande löpnummer i en tabell med inställningar (värdet "K001"). När du sedan lägger till en ny rad i tabellen ifråga hämtar du löpnumret från inställningarna, gör de ökningar som behövs och slutligen lägga in raden i tabellen.
Det är ju samma sak som att hämta högsta idt från tabellen och öka på det. Problemet med en sådan lösning är att man måste garantera att det inte sker två inserts parallellt så man får dubbla id, fel vid insert om idt redan finns.
Visst är det så. Om det läggs in många nya rader på kort tid (med millisekunders mellanrum) finns det risk för dubletter. Då är det bättre att låta databasen ta hand om det med sin egen räknare. Då får du göra någon sorts transaktion i stället.
använder man transaktioner så kan man ju låsa rader/kolumner/celler m.m. i vissa databaser.
då kan man skapa någon procedur/funktion som kan skapa ID till en. men det beror so msagt vilken SQL-databas man använder
Det är serienummer på produkter man tillverkar. Indexen måste se sådana ut för det gör dom på redan befintliga produkter.
Hmmm, innoDB stödjer transaktioner i MySQL 4.1, inte sant?
Isf, hur låser jag en hel tabell?
Har kollat lite i manualer men hittar inte hur man låser en hel tabell.
Hade man haft MySQL 5.* så hade man kunnat lägga en trigger som skötte IDt antar jag.
Det rör sig väl inte om så många samtidigt. Dock vill jag undvika fel så det är därför jag frågar. Man kan ju alltid göra antagandet att det aldrig kommer ske exakt samtidigt men det kan man ju aldrig vara säker på.
Mest därför jag frågade.