仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 811|回复: 8
打印 上一主题 下一主题

[学习教程] 猎取sql server中自增量之scope_identity(),@@Identity,IDENT_CURRENT的区分 ...

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:18:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在ORDERBY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDERBY方面也没什么作用)。在sqlserver2005,假如要获某个表最新增添的自增量,我们都晓得,可使用COPE_IDENTITY、
IDENT_CURRENT和@@IDENTITY三个函数,由于它们都前往拔出到标识列中的值。但这三个函数是否是不论甚么时分,前往的值都一样的呢?谜底是错的,自己之前恰是由于没有了解到这三个函数的区分,以是取到了毛病的自增量。

起首我们来看一下三个函数的界说:
@@IDENTITY:前往为跨一切感化域确当前会话中的某个表天生的最新标识值。
SCOPE_IDENTITY:前往为以后会话和以后感化域中的某个表天生的最新标识值。
IDENT_CURRENT:前往为某个会话和用域中的指定表天生的最新标识值。

在详解之前,我们先懂得甚么是会话与感化域:
sql会话:用户使用sql命令或利用查询剖析器毗连到数据库时,一个新的会话就创建了,一向到该毗连断开,大概用户重置该毗连为止,都处于统一个会话中。
感化域:假如多个语句处在统一个存储历程,函数,批处置中,那末它们位于不异的感化域中。

懂得会话与感化域后,信任读者对以上三个函数都有了也许的了解了。我们再举个例子来讲明。
假定有表T1与T2,T1与T2表都包括自增列ID。我们在T1表中利用insert触发器往T2中增加数据。
如今我们往T1表增加新数据,假定T1表新的ID值为1000,T1表的触发器往T2表增加数据T2表发生的新ID值
为2000,

那末实行完拔出语句后即刻实行
select@@IDENTITY
selectSCOPE_IDENTITY()
selectIDENT_CURRENT(T1)
selectIDENT_CURRENT(T2)


前往值应为:
2000
1000
1000
2000

延长提示:我们在写拔出语句时总喜好前往最新的ID值,Sql通常为如许写的
insertinto表(列)values(值);
select@@IDENTITY

好比动软主动天生的代码就是云云,

实在@@IDENTITY是不保险的,SCOPE_IDENTITY()才是最保险的


附上另两个与自量列有关的函数:

1、猎取标识列的种子值
可以使用函数IDENT_SEED,用法:
SELECTIDENT_SEED(表名)

2、猎取标识列的递增量
可以使用函数IDENT_INCR,用法:
SELECTIDENT_INCR(表名)InnoDB数据表的索引,与InnoDB数据表相比,在InnoDB数据表上,索引对InnoDB数据表的重要性要大得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。
沙发
发表于 2015-1-18 12:47:29 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
因胸联盟 该用户已被删除
板凳
发表于 2015-1-24 12:09:19 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
兰色精灵 该用户已被删除
地板
发表于 2015-2-1 11:10:22 | 只看该作者
相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
飘灵儿 该用户已被删除
5#
发表于 2015-2-7 05:17:42 | 只看该作者
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
爱飞 该用户已被删除
6#
发表于 2015-2-20 23:08:27 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
只想知道 该用户已被删除
7#
发表于 2015-3-6 19:16:14 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
柔情似水 该用户已被删除
8#
发表于 2015-3-13 08:07:15 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
若相依 该用户已被删除
9#
发表于 2015-3-20 17:09:26 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表