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


@@identity

Postades av 2003-03-20 09:53:58 - Lena Christensson, i forum asp - allmänt, Tråden har 7 Kommentarer och lästs av 538 personer

Hur använder jag @@identity mot SQL server för att returnera ID på en INSERT?
Går det att använda i en Stored Procedure?

Undrar
/Lena


Svara

Sv: @@identity

Postades av 2003-03-20 10:01:42 - Andreas Olausson

Här kommer ett litet exempel på en procedur.

Sedan är det bara att hämta Outputparametern (så slipper du recordset).

<code>
Create Procedure spNamn
@variabel [varchar](20),
@Output [int] OUTPUT
AS
INSERT INTO
tabell
(
fält
)
VALUES
(
@variabel
)
IF @@Error <> 0
BEGIN
SET @Output = -1
END
ELSE
BEGIN
SET @Output = @@identity
END
</code>


Svara

Sv: @@identity

Postades av 2003-03-20 10:05:16 - Christoffer Hedgate

CREATE PROC foo
AS
BEGIN

INSERT INTO ...

RETURN @@IDENTITY

END


Svara

Sv: @@identity

Postades av 2003-03-20 10:19:18 - Patrik Löwendahl

Kom bara ihåg att @@identity inte är connection specific ..

Det innebär att om någon gör en insert i databasen precis innan du plockar upp din @@identity, så finns det en risk att du får fel värde ..

vänta inte med att ta ut det speciellt länge ..

<code>
Create Procedure spNamn
@variabel [varchar](20),
@Output [int] OUTPUT
AS
declare @lastID int
INSERT INTO
tabell
(
fält
)
VALUES
(
@variabel
)
set @lastid = @@identity

IF @@Error <> 0
BEGIN
SET @Output = -1
END
ELSE
BEGIN
SET @Output = @@identity
END
</code>


Svara

Sv: @@identity

Postades av 2003-03-20 10:34:11 - Pontus Wång

Patrik: det är därför man använder scope_identity


Svara

Sv: @@identity

Postades av 2003-03-20 10:35:18 - Lena Christensson

Precis som det nämns ovan så har jag haft lite funderingar huruvida jag kan vara säker på att det är rätt ID som returneras.

Jag ställde frågan även på chaten och fick där ett väldigt användbart exempel av Trash
som ser ut såhär:
<code>
CREATE PROC add_adb_additionalbookings
@userid int, @itb_id int, @adi_id int, @usr_id int, @adb_amount money, @adb_price money
AS
SET NOCOUNT ON
INSERT INTO [adb_additionalbookings]
(
[itb_id],
[adi_id],
[usr_id],
[adb_amount],
[adb_price],
[updated_by],
[created_by]
)
VALUES
(
@itb_id,
@adi_id,
@usr_id,
@adb_amount,
@adb_price,
@userid,
@userid
)
-- Return the inserted record where adb_id is the new identity
SELECT *
FROM [adb_additionalbookings]
WHERE [adb_id] = SCOPE_IDENTITY()
</code>

Mer information om skillnaderna mellan @@IDENTITY, IDENT_CURRENT('tablename') och SCOPE_IDENTITY() finns här:
http://www.sqlteam.com/item.asp?ItemID=319

Tack för hjälpen!

/Lena


Svara

Sv: @@identity

Postades av 2003-03-20 11:24:35 - Christoffer Hedgate

> Kom bara ihåg att @@identity inte är connection specific

Eeh, jo det är den visst. @@identity och scope_identity() returnerar bägge det senast skapade identity-värdet i den aktuella sessionen, skillnaden är att scope_identity() håller sig till aktuellt scope. Dvs om en insert gör att en trigger körs, vilken i sin tur gör en insert i an annan tabell så får man med scope_identity() värdet från den första tabellen, med @@identity värdet från den andra tabellen.

IDENT_CURRENT() returnerar det senast skapade identity-värdet för en specifik tabell, oberoende av session och scope.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

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 808
27 960
271 761
578
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