WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Mysql/asp - Id För Senast Inlagd (https://www.wn.se/forum/showthread.php?t=306)

esset 2004-09-16 00:17

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.

Anders 2004-09-16 01:11

Citat:

Originally posted by gabriel@Sep 16 2004, 00:14
Är du säker på det där?
Jag har hört att just den funktionen i PHP skall klara av att få det id man stoppa in med egna scriptet senast...

Kommer inte ihåg vart, men jag har läst att det kan bli fel och att man inte ska använda den utan att kontrollera resultatet. Och om man ändå ska kolla så är det ju desamma att göra det själv från första början.

Robert 2004-09-16 10:37

Citat:

Ursprungligen postat av Anders
Citat:

Ursprungligen postat av knafve
Eru galen eller? Har hört att det är spöstraff på att skriva sådan kod juh. :)
Den koden kommer ju utan tvekan att returnera fel värde förr eller senare.

Samma sak med koden som orreborre postade med mysql_insert_id();
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.

Jag gör på samma sätt...

ric 2004-09-16 10:59

"Id För Senast Inlagd"

får man fråga vad ni använder det till?

Per 2004-09-16 11:17

Citat:

Originally posted by ric@Sep 16 2004, 10:59
"Id För Senast Inlagd"

får man fråga vad ni använder det till?

Ex. vid en shop, då order läggs:

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.

ZN 2004-09-16 11:34

Citat:

Originally posted by Anders@Sep 15 2004, 23:53
Samma sak med koden som orreborre postade med mysql_insert_id();
Det tvivlar jag på, men annars kan man för säkerhets skull skicka med "resource link identifiern".

Jester 2004-09-16 12:41

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:

You can generate sequences without calling LAST_INSERT_ID(), but the utility of using the function this way is that the ID value is maintained in the server as the last automatically generated value (multi-user safe).
Samma diskussion fast på ett annat forum:
http://www.experts-exchange.com/Data..._20709537.html

EDIT: Länk...

digiArt 2004-09-16 13:41

Frågan är om man inte bör köra application.lock också.

Kod:

Application.Lock()

Sätt in i db
Hämta last inserted

Application.Unlock()

Då hamnar alla andra "på kö"

Numet kör jag iof .NET och SQLServer, mucho enklare.

Robert 2004-09-16 14:31

Citat:

Originally posted by digiArt@Sep 16 2004, 13:41
Numet kör jag iof .NET och SQLServer, mucho enklare.
Finns det någon specialare för detta i .Net? Vad har jag missat här? =)

Starweb 2004-09-16 14:56

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.


Alla tider är GMT +2. Klockan är nu 21:43.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson