Mat*_*att 2 sql sql-server sql-server-2008
如何获取特定表的@@ IDENTITY?
我一直在做
select * from myTable
Run Code Online (Sandbox Code Playgroud)
因为我假设这设置范围,然后从SSMS中的同一窗口SQL查询窗口运行
select @@IDENTITY as identt
Run Code Online (Sandbox Code Playgroud)
它将identt作为null返回,这是不可能的,因为myTable已经有很多entrie了.
我希望它返回下一个可用的ID整数.
myTable的ID列设置为主键和自动增量.
您可以使用IDENT_CURRENT
IDENT_CURRENT( 'table_name' )
Run Code Online (Sandbox Code Playgroud)
请注意,IDENT_CURRENT 在任何会话和任何范围内返回表的最后一个标识值.这意味着,如果在您的标识值之后插入了另一个标识值,那么您将不会检索您插入的标识值.
您只能SELECT @@IDENTITY在插入后真正使用- 最后一次插入具有IDENTITY列的表是您将获得的值.
你不能将它"限制"到一个表 - @@ IDENTITY中的值 - 顺便说一句,我强烈建议使用SCOPE_IDENTITY()代替! - 是已设置的任何IDENTITY列的最后一个值.
@@ IDENTITY的问题在于它将报告插入到任何表中的最后一个IDENTITY值 - 如果您的数据表中的INSERT将导致例如触发器将条目写入Audit表,并且Audit表具有IDENTITY字段,你将获得IDENTITY值 - 而不是插入表中的值.SCOPE_IDENTITY()解决了这个问题.
| 归档时间: |
|
| 查看次数: |
2568 次 |
| 最近记录: |