webForumDet fria alternativet

få tillbaka primary key av typen uniqueidentifier

Databaser & SQL

4 svar · 348 visningar · startad av The_Hulk

Medlem sedan juni 20031 837 inlägg
Frågan#1

Har problem med en stored procedure.

min tabell har ett fält som är primary key av typen unique identifier.

Nu vill jag få ut värdet på ID-fältet efter jag skapat en ny rad.
Hade primary key varit av typen int med autoincreament så hade jag kunnat använda
SELECT @account_id = IDENT_CURRENT('account')

men detta fungerar inte få account_id är av typen uniqueidentfier.

går det att lösa på något bra sätt förutom att skriva:
select account_id from account where account_name='...'

kanske förklarade dåligt, säg bara till så ska jag försöka förklara lite bättre.

Medlem sedan dec. 200012 464 inlägg
#2

Hur genereras värdet då? Har du satt newid() som default eller?

SELECT @account_id = IDENT_CURRENT('account')

Så gör man inte. Använd scope_identity.

Medlem sedan juni 20031 837 inlägg
#3

japp, jag har newid() som default.
ska titta på det du föreslog.

/r

det fungerade inte heller med scope_identity().
försöker jag skriva det i stored procedure så klagar den på "numeric is incompatible with uniqueidentifier"

Medlem sedan dec. 200012 464 inlägg
#4

Jag menade aldrig scope_identity skulle fungera i ditt fall. Avsikten var att säga att ident_current inte är lämpligt att använda även för kolumner med identity.

declare @guid uniqueidentifier
set @guid = newid()
insert into t values(@guid,...)

ovanstående är det enda alternativ jag kommer på för ditt fall.

Medlem sedan nov. 2003569 inlägg
#5

DECLARE @account_ID UNIQUEIDENTIFIER
INSERT INTO ......
SELECT @account_id = SCOPE_IDENTITY()

255 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)