I have a bunch of data which will insert into a table. This issue is that I need it to return the primary key to that table. I wasn't sure if there was things like:
insert into TABLE (...) values (...) RETURNING p_key
or
select p_key from (insert into TABLE (...) values (...))
I am making a workaround for a browser and saved information which will more or less add a row and then update it... but without the primary key, there is no way to update it as there is no reference to it.
I was looking online and found some examples via google, but it confused me slightly with these examples.
http://en.wikipedia.org/wiki/Insert_(SQL)#Retrieving_the_key
Wikipedia was saying that for SQL Server 2008 to use OUTPUT
instead of RETURNING
, possible to use something like OUTPUT p_key
If you're inserting a whole set of rows, selecting the
SCOPE_IDENTITY()
won't do. AndSCOPE_IDENTITY
also only works for (numeric) identity columns - sometimes your PK is something else...But SQL Server does have the
OUTPUT
clause - and it's very well documented on MSDN!Those values will be "echoed" back to the calling app, e.g. you'll see them in a grid in SQL Server Management Studio, or you can read them as a result set from your C# or VB.NET calling this
INSERT
statement.In
C#
, right after your SQL Statement writeSELECT SCOPE_IDENTITY();
so your code would be:then, instead of
executeNonQuery
useexecuteScalar
.That should do the trick!
Scope_Identity()
is what you want, assuming that by "primary key" you mean "Identity"Using @@IDENTITY , you can get the last generated primary key
After performing insert, query:
to retrieve last inserted primary key.