19. februar 2008 - 21:25Der er
18 kommentarer og 1 løsning
Last inserted ID i MSSQL
Hej
Jeg har lavet en brugeroprettelse der opretter to rækker i to forskellige tabeller i min db.
En bruger kan oprette en gruppe inkl sig selv samtidigt.
Jeg har lavet det så den først opretter gruppen med en identifier som hedder groupid og derefter selve brugeren der bliver knyttet til gruppen med det groupid. (altså brugeren har en kolonne der hedder groupid)
Hvordan kalder jeg det senest indsatte id når jeg skal oprette brugeren?
Ligesom man i PHP og mysql bare kan skrive mysql_insert_id();
Min terminologi er måske forkert. Min pointe var at SCOPE_IDENTITY() returnerer den sidste id der er indsat i samme forespørgsel, mens @@IDENTITY returnerer den sidste id der indsat i samme session (altså forbindelse) Det er i hver fald hvad microsoft påstår http://msdn2.microsoft.com/en-us/library/ms190315.aspx
under alle omstændigheder vil løsningen i mit første svar virke.
Baade SCOPE_IDENTITY() og @@IDENTITY er per connection (session).
Forskellen er at @@IDENTITY er sidste uanset hvad mens SCOPE_IDENTITY() er sidste i current scope (paa almindeligt dansk: den bliver ikke overskrevet hvis ens insert resulterer i at en trigger koeres som laver en ny indsaet der genererer en ny identity).
Nu har jeg sat dem ind i samme connection, men scope identity bliver stadig null.
Min kode er her:
SqlCommand cmd = new SqlCommand(); SqlConnection con;
string connectionstring = ConfigurationManager.ConnectionStrings["klansidenConnectionString"].ConnectionString; con = new SqlConnection(connectionstring);
Kunne kun få det til at virke med en stored procedure.. Hvilket også ret udemærket i mit tilfælde.
Takker for jeres forsøg på hjælp ellers :)
:-Haolan
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.