仓酷云

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

[学习教程] 使用SQL语句重置数据库中一切表的标识列(自增量)

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

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

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

x
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。在外实行的时分,常常必要为用户清空一切表中的数据,数据清空后,最好是可以让表中的标识列从1入手下手记数,以是要重置标识列确当前值。我们能够使用dbcccheckident来重置表的标识列,但一次只能重置一个表的标识列,地点就想到了游标,我们能够使用游标来轮回实行dbcccheckident语句,如许就能够重置数据库中一切表的标识列了。

关于dbcccheckident的用法,能够参考本站:
重置SqlServer表的自增列,让自增列从头入手下手记数

在这之前,我们起首要猎取两个信息:
1,猎取到数据库中一切表信息,这个能够用select*fromsys.tables来完成。
2,要判别表中是不是有标识列,能够用以下sql来查询:
select*fromsys.columnswhereis_identity=1andobject_id=object_id(表名)

关于怎样猎取到数据库一切表的更多办法,请检察本站:
使用SQL语句查询数据库中一切表

失掉需要的两个信息后,我们就能够写游标来重置数据库中一切表的标识列了,sql以下:
declare@tablenamevarchar(50)
declare@sqlvarchar(1000)

declarecurcursorforselectnamefromsys.tables
opencur
fetchnextfromcurinto@tablename
while@@fetch_status=0
begin

set@sql=if(selectcount(1)from+@tablename+)<=0andexists(select*fromsys.columnswhereis_identity=1andobject_id=object_id(+@tablename+))
begin
dbcccheckident(+@tablename+,reseed,1)
end

exec(@sql)

fetchnextfromcurinto@tablename
end
closecur
deallocatecur


但愿以上办法能给人人带来便当。因此我们的方案中要构造这种逆操作。Event_type增加一种FlashBACK_EVENT。这类操作形式与Query_Event相同,都是简单的SQL语句,只是包含了将数据恢复的操作。
因胸联盟 该用户已被删除
沙发
发表于 2015-1-18 12:10:00 来自手机 | 只看该作者
需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-26 12:50:43 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
山那边是海 该用户已被删除
地板
发表于 2015-2-4 18:35:17 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
莫相离 该用户已被删除
5#
发表于 2015-2-10 05:44:02 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
简单生活 该用户已被删除
6#
发表于 2015-2-28 23:01:25 | 只看该作者
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-10 10:43:54 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
再见西城 该用户已被删除
8#
发表于 2015-3-17 06:49:32 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
小妖女 该用户已被删除
9#
发表于 2015-3-24 01:18:47 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 13:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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