Fal*_*per 21 database sql-server
我有一堆数据将插入表中.这个问题是我需要它将主键返回到该表.我不确定是否有这样的事情:
insert into TABLE (...) values (...) RETURNING p_key
Run Code Online (Sandbox Code Playgroud)
要么
select p_key from (insert into TABLE (...) values (...))
Run Code Online (Sandbox Code Playgroud)
我正在为浏览器制作一个解决方法并保存信息,这些信息会或多或少地添加一行然后更新它......但是没有主键,就没有办法更新它,因为没有引用它.
我在线寻找并通过谷歌找到了一些例子,但是我对这些例子略有不满.
http://en.wikipedia.org/wiki/Insert_(SQL)#Retrieving_the_key
维基百科说,要使用SQL Server 2008 OUTPUT
代替RETURNING
,可能会使用类似的东西OUTPUT p_key
mar*_*c_s 32
如果您要插入一整行行,则选择SCOPE_IDENTITY()
不行.并且SCOPE_IDENTITY
只适用于(数字)标识列 - 有时你的PK是其他东西......
但SQL Server 确实有这个OUTPUT
条款 - 它在MSDN上有很好的文档记录!
INSERT INTO dbo.Table(columns)
OUTPUT INSERTED.p_key, INSERTED.someothercolumnhere .......
VALUES(...)
Run Code Online (Sandbox Code Playgroud)
这些值将"回显"回调用应用程序,例如,您将在SQL Server Management Studio的网格中看到它们,或者您可以从C#或VB.NET中调用此INSERT
语句将其作为结果集读取.
pod*_*ska 10
Scope_Identity()
是你想要的,假设"主键"你的意思是"身份"
declare @id int
insert yourtable values (some, values)
select @id = Scope_Identity()
Run Code Online (Sandbox Code Playgroud)
在 中C#
,在您编写 SQL 语句之后SELECT SCOPE_IDENTITY();
,您的代码将是:
insert into TABLE (...) values (...); SELECT SCOPE_IDENTITY();
Run Code Online (Sandbox Code Playgroud)
然后,而不是executeNonQuery
使用executeScalar
.
这应该够了吧!
归档时间: |
|
查看次数: |
54518 次 |
最近记录: |