以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]如何重置_identify列? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=42803) |
-- 作者:万通 -- 发布时间:2013/11/22 13:49:00 -- [求助]如何重置_identify列? 请问一下:如何重置外部数据源的_identifty 列? 因为每次导入大量的数据,不论保存与否?_identify 列的值,都会自增。 这样,在外部数据源的情况下,如果多人多次导入过大量的数据,即使后来都撤销了,时间长了,_identify列的值也会太大了。 如何在不删除表中数据的情况下,重置外部数据源的_identify ? 请分别对数据源类型(access、sqlserver) (备注:帮助中通过baserow的方式,是不能改变的,因为identify是只读的。)
[此贴子已经被作者于2013-11-22 13:51:39编辑过]
|
-- 作者:Bin -- 发布时间:2013/11/22 14:20:00 -- 利用SQLCOMMAND 执行SQL语句 truncate table 表名
|
-- 作者:程兴刚 -- 发布时间:2013/11/22 14:58:00 -- To 楼主,谁说不可以?只是您沒想到而已!我一会儿回来给您一个! [此贴子已经被作者于2013-11-22 14:58:33编辑过]
|
-- 作者:程兴刚 -- 发布时间:2013/11/22 15:18:00 -- 下面的两次循环,达到彻底重置_Identify列的实现:
For i As Integer = 0 To DataTables("表A").DataRows.Count - 1 Next ’因为_Identify的值必须是唯一,先重置为很大的数,供下一步从1开始重置而不导致重复,本人测试,直接用下面的循环也是可以实现的,但从安全起见的角度考虑,还是两次重置比较好。 [此贴子已经被作者于2013-11-22 15:20:02编辑过]
|
-- 作者:万通 -- 发布时间:2013/11/22 16:30:00 -- 外出刚回,看到论坛上程版主的回复了。赶紧测试了一下,
项目打开,好像可以,但重新打开项目就不行了(恢复原状了) 麻烦程版重启项目就知道了。 但也同样非常谢谢程版的热心! |
-- 作者:jspta -- 发布时间:2013/11/22 16:44:00 -- 为什么要关心这个那? 内部数据源不知道,外部数据源的话,取消自动增长,重置,在设置,也许可以 |
-- 作者:程兴刚 -- 发布时间:2013/11/22 17:51:00 -- 我这里是可以的,我都到后台数据库看了! |
-- 作者:有点甜 -- 发布时间:2013/11/22 19:51:00 -- 如6楼所说,三步。 把表的主键去掉;重置_Identify的值;把表的主键设成_Identify
|
-- 作者:程兴刚 -- 发布时间:2013/11/25 2:29:00 -- 确实是我的错:
For i As Integer = 0 To DataTables("sys_授权").DataRows.Count - 1
表面得到的是1,但后台数据库确实没有改,下面这样就原形毕露了:
For i As Integer = 0 To DataTables("sys_授权").DataRows.Count - 1
但愿贺老师提供真正能够重置_identify列的方法! [此贴子已经被作者于2013-11-25 2:29:22编辑过]
|