jag har en tabell där en av kolumnerna är en Int som är primary key och auto_increment. hur gör jag för att ta reda på vad en ny post får för värde i den kolumnen?
det är nämligen så att jag gör en webbshop där det order-nummret (ovan nämda kolumn) ska skickas till beställarens mail när orden skapats. det går såklart att ta ut maxvärdet ur kolumnen och sedan addera 1, men det känns inte rätt med tanke på att det skulle kunna gå fel om två ordrar görs sammtidigt. dessutom är det mycket arbete att hitta det högsta värdet.
SPiNMedlem sedan mars 20007 896 inlägg I Access och MSSQL Server använder du:
SELECT @@IDENTITY;
...för att få ut räknarvärdet.
Glömde säga att jag kör mySQL 3.23. Men på det sättet så finns det ändå risk för att två ordrar som registreras sammtidigt stör varandra.
Order 1 registreras i databasen.
Order 2 registreras i databasen.
Order 1 tar ut senaste värdet på order-id:t och mailar det till kunden.
Order 2 tar ut senaste värdet på order-id:t och mailar det till kunden.
på det sättet kommer alltså båda kunderna få kund nr 2:s ordernummer i mailen... är chansen så liten att det händer att man kan bortse från att sådant händer?
LarsGMedlem sedan dec. 200012 464 inlägg I mysql:
select last_insert_id()
Vilken metod menar du? @@identity och last_insert_id blandar inte ihop id för olika anslutningar.
Flyttas från SQL till Mysql
aha. visste inte att databas-servern brydde sig om vilken anslutning som den arbetade mot när man gör sådant.
tack för hjälpen!