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


Få reda på id vid insert

Postades av 2004-08-03 16:37:45 - stefan ljungstedt, i forum sql-server/msde, Tråden har 16 Kommentarer och lästs av 887 personer

Hur ska man få reda på vilken plats en insert hamnar på. Mitt exempel: jag vill spara ner en klubb och sedan spara ner ett lag som hör till den klubben. Primärnyckeln är en räknare och klubbid är en främmande nyckel i Lag? Försökte att söka upp max värde i klubb efter insert men det känns inte rätt och kan bli fel om någon hinner imellan.


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-03 17:03:50 - Jenny Månsson

Se mitt inlägg
[143589]

Du gör "select @@Identity" om du inte jobbar med sp


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-03 17:07:12 - Per Hultqvist

Det finns flera sätt, här är några :

* Ändra primärnyckel till ett GUID (UniqueIdentifier). Detta kan du lätt skapa redan i GUI:t, och sätta dessa i DataSetet/RecordSetet både på master-(klubb) och detail-tabellen (lag), innan du skickar ned datan.

* Använd en Stored Procedure och returnera SCOPE_IDENTITY() eller @@Identity...Har för mig att SCOPE_IDENTITY() ger säkrast resultat.

* Har du möjligen ett annat unikt fält i tabellen, t ex klubbnamn? I sådana fall kan du ju ställa en fråga efter insert : SELECT [ID] FROM Klubb WHERE [Namn]='klubbnamn'

Personligen föredrar jag lösning 1 eller 2...

Din föreslagna lösning med MAX() är inte alls bra i ett fleranvändarsystem (för eller senare får du en konflikt), men kan fungera ok om det bara är en användare. Ovanstående lösningar är dock säkrare...


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-03 17:49:57 - stefan ljungstedt

Ska prova med sp och använda mig av SCOPE_IDENTITY() får väl bli att googla


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-03 19:44:54 - Patrik Dahlén

Om du vill veta mer om @@Identity, SCOPE_IDENTITY() och IDENT_CURRENT kan du läsa här, http://www.pdc.se/blog/DisplayEntry.aspx?eid=12


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-04 08:56:02 - Kalle Dahlberg

uniqueidentifier är en 128 bitars datatyp, och kan inte rekommenderas om man inte har specifika behov (replikering etc.). Den tar onödigt mycket lagringsutrymme och slöar ner operationer (ex. joins) jämfört med en vanlig int.

/k


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-04 18:00:27 - Per Hultqvist

> <b>uniqueidentifier är en 128 bitars datatyp, och kan inte rekommenderas om man inte har specifika behov (replikering etc.). Den tar onödigt mycket lagringsutrymme och slöar ner operationer (ex. joins) jämfört med en vanlig int. </b>

Man får givetvis väga fördelarna mot nackdelarna...Det är sällan storleken på datatypen eller prestandan är relevant i mina projekt/jobb i alla fall. Det är mycket oftare (utvecklings-)tiden som måste optimeras och då är enklare lösningar viktigare än optimerade/slimmade. Personligen gillar jag GUID-lösningen men använder den bara när jag behöver, dvs i fallet som beskrevs ovan.


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-06 13:07:46 - stefan ljungstedt

Som jag förstår det så skapas Guidet innan det skickas ner i databasen och man behöver inte vänta på svar eller söka efter nyckelid. Nackdelen är att man måste generera guid på samma dator men det görs ju på webbservern. Låter som ett bra förslag, finns det några bra förslag på kod


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-06 14:59:55 - Andreas Hillqvist

Jag håller med Kalle Dahlberg. GUID bör av prestanda skäll endast användas om absolut nödvändigt.

Int och BigInt räcker långt.


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-06 15:10:55 - stefan ljungstedt

Vad menar du med att Int och bigInt räcker för en lösning som jag beskrev? Du förordar en annan lösning alltså vilken?

Mvh Stefan Ljungstedt


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-06 16:07:41 - Andreas Hillqvist

Jag säger att det är väldigt få fall man behöver GUID. Jag pratar inte om specifika lösningar. Om din anledning för att använda GUID är att man kan kan skicka in den i en SQL sats. Så tycker jag du borde omvärdera användningen av GUID.

Skillnaden med att infoga ett GUID och att arbeta med en räknare är at du måste få en räknare retunerad. Vad är det som är så alvarligt med detta, eftersom du valt GUID för detta?


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-06 17:07:29 - stefan ljungstedt

Hur returnerar man då en id vid en Insert för att veta vilket id den fick?

Stefan


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-07 12:32:49 - Andreas Hillqvist

@@SCOPE_IDENTITY() eller @IDENTITY(). MEn man får ge akt på triggers.


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-07 17:26:34 - Per Hultqvist

> <b>@@SCOPE_IDENTITY() eller @SCOPE_IDENTITY(). MEn man får ge akt på triggers.</b>

Du blandar ihop @@IDENTITY och SCOPE_IDENTITY() här, Andreas.

Hur som helst, en SP som returnerar en identity-kolumn kan se ut så här :

CREATE PROCEDURE InsertCustomer
    @Name     varchar(50)
AS
    INSERT INTO Customer ([Name]) VALUES (@Name)
    SELECT SCOPE_IDENTITY()
    -- Mindre bra alternativ : SELECT @@IDENTITY
GO


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-08 00:32:00 - Andreas Hillqvist

Vad menar du med blandar ihop? JAg slarvade när jag klip och klistrade. ;o)


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-09 08:27:01 - Kalle Dahlberg

Viktigt: Om man har fler insert-satser efter varandra (eg. använder scope_identity() flera gånger) så måste man ha felhantering. Annars följer tidigare värdet på scope_identity() med vid en rollback.

/K


Svara

Sv: Få reda på id vid insert

Postades av 2004-08-10 11:02:10 - stefan ljungstedt

Då var väl detta löst TAck! behöver alltså använda mig av sp och SCOPE_IDENTITY

Stefan Ljungstedt


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

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 569 619
27 953
271 709
568
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