Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Låsa rader i sql

Postades av 2004-06-10 14:13:30 - Anders Bengtsson, i forum databaser, Tråden har 5 Kommentarer och lästs av 1113 personer

Jag har en funktion som tar ut maxid i min tabell.
Problemet är om två personer gör detta samtidigt kommer de att få samma ID och allt
kommer att bli fel. Hur ska jag göra för att kunna låsa ID

<code>
string strSQL = "SELECT max("+ col +") AS MAXID from " + table;

IDataReader reader = optoSql.ExecuteReader(strSQL);

while (reader.Read())
{
if(reader.IsDBNull(0))
lngID = 0;
else
lngID =Convert.ToInt16(reader["MAXID"]) + 1;
}
reader.Close();
optoSql.Disconnect();
return lngID;
</code>


Svara

Sv: Låsa rader i sql

Postades av 2004-06-10 15:18:09 - Magnus Gladh

Det beror ju på vad du vill göra. Just nu plockar du ut Max ID från en kolumn och om en annan person sätter in en ny rad, så ändras ju MaxID och du får RÄTT värde.

Om du däremot vill vet vilket ID som just din ny insatta post har, så skall du INTE gör så utan använda dig av @@IDENTITY eller SCOPE_IDENTITY() beroende på vilken databas du har.

SELECT @@IDENTITY eller SELECT SCOPE_IDENTITY() ger lite olika värden beroende på hur de används, om du använde MS SQL Server, så hittar du mer info i Books Online som följer med...

- M


Svara

Sv: Låsa rader i sql

Postades av 2004-06-17 20:57:03 - Per Karlsson

Om du vill ha reda på det högsta id-värdet för att kunna bestämma vilket id nästa post ska få, så kan du göra allt i en transaktion för att garantera att det inte blir några samtidighetsproblem.

/Pelle


Svara

Sv: Låsa rader i sql

Postades av 2004-06-17 23:18:18 - Johan Olsson

Tjena

Använd ExecuteScalar istället - mindre meck med reader.read (while onödig, if räcker som du kör nu)
Och skicka med ett fält som är indexerat - har läst nånstans att det går fortare...


Får jag föreslå en funktion (procedur) som gör insert utan data och returnerar id:t på den nya posten ?

Eller som Pelle säger - ringa in koden med en Transaction.

/Johan


Svara

Sv: Låsa rader i sql

Postades av 2004-06-28 21:04:41 - Ola Lindfeldt

Så här bör det se ut, i en stored procedure (SQL server)


pseudokåd

<code>
BEGIN TRANSACTION
SELECT @MyID = MAX(ID) FROM ...
INSERT INTO Tabellen .....
COMMIT TRANSACTION
</code>

Som redan sagts, är det ännu bättre om id är en @@identity column då slipper du select max.

Ola



Svara

Nyligen

  • 17:54 Vegastars New Zealand
  • 16:56 Verde Casino Danmark
  • 13:54 Vegastars: Top Australian Online C
  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 973
27 965
271 783
3 533
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies