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.
4 svar · 348 visningar · startad av The_Hulk
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.
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.
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"
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.
DECLARE @account_ID UNIQUEIDENTIFIER
INSERT INTO ......
SELECT @account_id = SCOPE_IDENTITY()