hej! Lägg till "SELECT @@IDENTITY" sist i din sp. Kolla även in SCOPE_IDENTITY (så du har koll på skillnaden) om du använder triggers. hmm.. jag testar du säger att id-kolumnen har autoincrement och är en unique identifier. Identity och autoincrement kan du bara ha på int (eller motsvarande) Yes, såg att det bara funkar i sql 2005. Ocj ja, det måste vara en unique identifier. Databasen är byggt så och det får inte ändras.. suck.få ut nytt id vid insert
Jag har en sp som insertar en ny rad i en tabell. Den ser ut som
INSERT INTO Kompetens (KompetensNamn) VALUES
(@KompetensNamn)
I tabellen finns en id-kolumn som har autoincrement. Jag vill att sp:n skall returnera det nya id:t. Finns något annat sätt att plocka ut det än att göra en select efter insert-satsen i sp:n? Alltså att få ett returvärde direkt i insert-satsen?
id-fältet är en unique identifier.
mvh
henrikSv: få ut nytt id vid insert
/JohanSv:få ut nytt id vid insert
INSERT INTO Kompetens (KompetensNamn) VALUES ('test')
SELECT @@IDENTITY
..men proceduren returnerar bara null, men i tabellen har id:et fått värdet
CDE1EDDF-F1C2-401A-938A-B6A053AD6D1B
Vad saknas?
id-kolumnen kompetensID är alltså av typen unique identifier, och har "Default Value or Binding" satt till (newid())Sv: få ut nytt id vid insert
Men har du satt den som primary key? Det måste du göra.Sv: få ut nytt id vid insert
Du har skapat ett id som är en uniqueidentifier!
Varför? Kan du inte använda en int?
Annars är jag rädd att det är lite lurigare än så.
Du får använda en
INSERT xxx
OUTPUT yyy
för att få tag på id:t
Detta funkar BARA i SQL 2005 - nytt kommando.
/mickeSv:få ut nytt id vid insert