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 次 |
| 最近记录: |