![]() |
När jag med phpmyadmin lägger in en ny rad i min tabell så skriver den ut vilket id-nummer den nya raden fick. Hur ordnar jag det enklast i ett asp-script?
|
Jag kan inget om ASP då jag kodar i PHP, men detta kanske hjälper?
http://www.4guysfromrolla.com/webtech/tips...t122600-1.shtml |
Tackar! Det hjälpte en bit på vägen. Fast som det är nu måste jag göra två MySQL-frågor. Först en för att lägga in raden, och så en för att kontrollera vilket id-nummer den fick.
Jag skulle vilja klämma in det på en enda rad, typ så här: SQL = "INSERT INTO foretag (epost, password) VALUES ('test','pass');SELECT @@IDENTITY FROM foretag" Set rs = Connect.Execute(SQL) Fast då får jag MySQL-fel i närheten av ";SELECT @@IDENTITY" |
Detta hjälper dig nog inget, men i php skriver man bara:
Kod:
$sql = mysql_query("INSERT INTO ...."); Det kanske finns något liknande i ASP? |
Citat:
Det blir fortfarande 2 frågor till databasen. |
Aspsidan.nu ;)
|
Jag har mitt egna sätt..
Efter jag lagt in nått i databasen uppdaterar jag den (recset.update) och väljer sista posten.. alltså: Select TOP 1 * From tabell ORDER BY id DESC hämtar det högsta ID:t.. oftast det senaste. |
Citat:
Den koden kommer ju utan tvekan att returnera fel värde förr eller senare. |
Citat:
Jag brukar, för att vara på den säkra sidan, ställa en fråga till databasen med de värden jag nyss lade in för att få id på den nya raden. |
Citat:
Jag har hört att just den funktionen i PHP skall klara av att få det id man stoppa in med egna scriptet senast... |
Problemet kommer ju med ökningen av förfrågningar till databasen. Körs 5 inserts till databasen samtidigt och det laggar hos någon kommer person 1 få person 5:s post. Är ni med? Risky.
Bästa lösningen är som någon innan sa, kolla med samtliga värden som lades in och hämta den posten istället. Garanterat säkrast. |
Citat:
|
Citat:
|
"Id För Senast Inlagd"
får man fråga vad ni använder det till? |
Citat:
Lägg in i ordertabellen, få tillbaka order-id. Lägg in varorna i varortabellen, i tabellen finns orderid för att veta vilka varor som hör till vilken order. Där används alltså order-id. |
Citat:
|
Skulle väl tro att du ha löst detta vid det här laget, men vad jag förstår från www.myswlfreaks.com lista över statements borde denna kod fungera alldeles utmärkt:
Kod:
SELECT LAST_INSERT_ID(); Citat:
http://www.experts-exchange.com/Data..._20709537.html EDIT: Länk... |
Frågan är om man inte bör köra application.lock också.
Kod:
Application.Lock() Numet kör jag iof .NET och SQLServer, mucho enklare. |
Citat:
|
Det finns 3 sätt att göra på direkt i databas förfrågningen:
* LAST_INSERT_ID() * @@IDENTITY * MAX(Id) Alltså tex: SELECT @@IDENTITY FROM databasnamn LAST_INSERT_ID() och @@IDENTITY är samma/bra, MAX(Id) är inte att rekommendera dock. |
Citat:
Tacka vet jag Oracle. Där kan man hämta ut ett unikt nästa-id _innan_ man har kört INSERT. Det är grejer det... |
Alla tider är GMT +2. Klockan är nu 15:18. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson