易截截图软件、单文件、免安装、纯绿色、仅160KB

SqlServer中用@@IDENTITY取最新ID不准的问题

一个网友问我一个关于@@IDENTITY的问题。他的数据库中有一个存储过程,有 insert语句,然后马上就用SELECT @@IDENTITY取刚插入的ID值,通常这是没有问题的,但是问题是ID实际上已经达到了100多万了,而 SELECT @@IDENTITY  返回的只有很小的值(才30多),令人费解。
我开始也不太明白,问他先别管@@IDENTITY,新插入记录,ID是多少。他说ID是100多万那么大的数。不是才几十那么小。我帮他分析可能性,是不是identity到了最大限,且identity最大是2的64次方。他说int  最大值是 2,147,483,647,他的ID离溢出还早呢, 但是 return @@IDENTITY 就是 很小的值(只有几十)。我然后又帮他分析道,是不是ID的值被重置过?他说不是,他说现在新插入的 id 就是 170多万。说到这里,我了解了一点了。我建议他用scope_identity(table_name)函数来取指定表的IDENTITY。我们以前有过经验,@@IDENTITY和IDENTITY_CURRENT()都不是很理想,因为它们会受当前表的范围影响。通常有触发器就会引起@@IDENTITY不能正确地取值,IDENTITY_CURRENT()也是如此。幸好有scope_identity(table_name)函数。在这种情况下就只能用这个。这时他才想起来,他的表有触发器。呵呵,迟了点。我建议他最好不要用触发器。能避免就避免。他说这个触发器是可以用别的方式代替的。他会试一下用scope_identity(table_name)函数和去除触发器。


相关文档:

全文索引原理及其示例(sqlserver)

全文检索是对大数据文本进行索引,在建立的索引中对要查找的单词进行进行搜索,定位哪些文本数据包括要搜索的单词。因此,全文检索的全部工作就是建立索引和在索引中搜索定位,所有的工作都是围绕这两个来进行的。下面就逐个介绍。
  建立全文索引中有两项非常重要,一个是如何对文本进行分词,一是建立索引的数据结构 ......

MyEclipse中配置SQLServer 2005数据库

1.安装好SQLServer 2005数据库软件,接着最重要的就是安装数据库驱动SQL Server 2005 driver for JDBC,可以到:http://download.microsoft.com/download/8/B/D/8BDABAE2-B6EA-41D4-B903-7916EF3690EF/sqljdbc_1.2.2323.101_enu.exe下载
2.将JDBC解压到任意的位置,在安装目录里找到sqljdbc.jar文件,以前的文章中已经讲过 ......

SQLSERVER用户权限管理数据库

用户权限管理
一、服务器登录帐号和用户帐号管理
1.SQL Server服务器登录管理
不管使用哪种认证模式,用户都必须先具备有效的用户登录帐号。SQL Server有三个默认的用户登录帐号:即sa、Builtin\administrators和guest。sa是系统管理员(system administrator)的简称,是一个特殊的用户,在SQL Server系统和所有数据库中 ......

使用T SQL获取到SQLServer Ip和端口号

在平时的工作过程中,作为DBA角色管理数据库,头脑中的印象往往是数据库实例名称,而不会去关心Server的IP,而作为Developer的角色,他们往往想知道知道Server Ip和端口号。所以,DBA会经常被问及到:XXX实例的IP和端口号是什么?
这个问题,当然我们可以Login到OS查看IP、使用配制管理工具获取到端口号。但是,这个方法非 ......

使用JavaScript连接SqlServer数据库。执行CRUD操作。

function db()
{
//活动编号
var activeid = Request.Form("activeid");
//用户名
var username = Request.Form("username");
//手机号码
var mobile = Request.Form("mobile");
var conn= Server.CreateObject("ADODB.connection");
var rs= Serve ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号