已经删除了些行看着不爽重新从1开始如何弄?!哈哈~~~~~~表名TB_Role 自增列rid
解决方案 »
- Sql多表查询基础问题。
- 不能新建数据库???
- sql求一组内最大的两个值
- sql2005 develop可以安装在xp吧,大概多大,哪里有下载,哪里有注册码
- 关于execl与存储过程的问题
- 我刚安装的VS2008,第一次启动选择的开发语言是C#,之后还可以改么?怎么改?
- 版主和微软件专家或Yang_进来帮忙,有关ADO对有Instead of update型TRIGGER的表进行更新操作时出错的问题。
- 求一sql
- 应该算是动态的问题吧。我也不能确定,看看再说喽
- 店铺首页,店铺商品,店铺商品分类怎么用java写
- 存储过程中怎么insert 一个由参数传过来的uniqueidentifier
- 在查询分析器中要查看指定的存储过程, 该怎么写?
TRUNCATE TABLE tablename
注意:这里说的delete是指不带where子句的delete语句
相同点:truncate和不带where子句的delete, 以及drop都会删除表内的数据
不同点:
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high water)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下将空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
4.速度,一般来说: drop> truncate > delete
5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
alter table tb add rid int identity(1,1)
我没试过!
dbcc checkident(表名, RESEED, 0)
本人测试通过的
dbcc checkident(表名, RESEED, 0)
这个是可以的.我一时没记起来.
检查标识信息: 当前标识值 '0',当前列值 '0'。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
2 b
3 c
不可能,把你的建表语句弄出来--aid aname
2b
3c 上面这个算什么,什么都看不出来
你的表名TB_Role吗 自增列rid怎么都看不到呢??
1、
select * into # from TB_Role
truncate TB_Role
alter table # drop COLUMN rid
insert TB_Role
select * from #
--drop table #
2、
select r_id=identity(int,1,1),所有列名(不包含r_id) into roy
from TB_Role
drop table TB_Role
EXEC sp_rename 'roy', 'TB_Role'--重命名表
不知道你这样做有什么用 好像失去了 identity 列的意义
倒建议你 做个视图 第一行用 r_id=identity(int,1,1) 来代替 不用一直修改表 假如你表几十万行 那样的做法太不实用了