仓酷云

标题: 使用SQL语句重置数据库中一切表的标识列(自增量) [打印本页]

作者: 柔情似水    时间: 2015-1-16 14:09
标题: 使用SQL语句重置数据库中一切表的标识列(自增量)
索引是一种特殊的文件(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
需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
作者: 灵魂腐蚀    时间: 2015-1-26 12:50
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
作者: 山那边是海    时间: 2015-2-4 18:35
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
作者: 莫相离    时间: 2015-2-10 05:44
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
作者: 简单生活    时间: 2015-2-28 23:01
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
作者: 愤怒的大鸟    时间: 2015-3-10 10:43
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
作者: 再见西城    时间: 2015-3-17 06:49
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
作者: 小妖女    时间: 2015-3-24 01:18
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2