首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server自动增量

Server自动增量
EN

Stack Overflow用户
提问于 2013-11-27 08:10:00
回答 4查看 1.1K关注 0票数 0

我使用3-4表,并在所有这些表中使用主值的自动增量。我希望所有的表都从1开始

例如,student表id从1开始,Registration表从1开始。

现在,自动增量从学生表的最后一个id开始。例如,学生表中的LastRow ID为100,因此Registeration将从101开始。我要从1开始怎么做。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-27 08:44:13

正如艾纳夫所说,这个问题要小心处理!

如果您的学生表是空的,并且您正试图因为测试而重置计数器,或者因为每年删除数据库等等,那么您可以使用DBCC化学命令(如果您使用的是MySql ),或者您可以对MySql http://dev.mysql.com/doc/refman/5.0/en/alter-table.html使用alter (Auto_increment)。

但是要小心,因为任何外键依赖项都必须重新设置--您可能会遇到各种各样的麻烦。

下面是一个快速测试场景:

代码语言:javascript
复制
--Test variables & environment
DECLARE @TimeParam AS DATETIME
CREATE TABLE #Downtime (ID int identity, initial varchar(1))
INSERT INTO #Downtime VALUES('a')
INSERT INTO #Downtime VALUES('b')
INSERT INTO #Downtime VALUES('c')
INSERT INTO #Downtime VALUES('d')
INSERT INTO #Downtime VALUES('e')
INSERT INTO #Downtime VALUES('f')
INSERT INTO #Downtime VALUES('g')
INSERT INTO #Downtime VALUES('h')
INSERT INTO #Downtime VALUES('i')
INSERT INTO #Downtime VALUES('j')

--Queries
DBCC CHECKIDENT (#Downtime)
SELECT ID, initial FROM #Downtime
DELETE FROM #Downtime
DBCC CHECKIDENT (#Downtime, RESEED, 0)
INSERT INTO #Downtime VALUES('k')
SELECT ID, initial FROM #Downtime
DROP TABLE #Downtime

--results (first select)
ID  initial
1   a
2   b
3   c
4   d
5   e
6   f
7   g
8   h
9   i
10  j

--results (second select)
ID  initial
2   j

对于您的情况,您将使用:('Student',RESEED,0);

再次谨慎地处理此命令,并在运行该命令之前检查对此主键的所有引用。确保您也备份了数据库!

票数 0
EN

Stack Overflow用户

发布于 2013-11-27 08:25:47

如果您已经有一些值(表不为空),那么这是不可能的。可以清空所有表并运行DBCC CHECKIDENT命令来重置自动增量主键的值并从1重新启动。

代码语言:javascript
复制
DBCC CHECKIDENT ("YourTableNameHere", RESEED, number);

如果number =0,那么在下一个插入中自动增量字段将包含值1

如果number = 101,那么在下一个插入中,自动增量字段将包含值102。

但请注意,此命令只是重置标识列的值,它不检查冲突。我的意思是,如果值1已经存在,那么在试图插入该表时会出现错误。

票数 3
EN

Stack Overflow用户

发布于 2013-11-27 08:13:51

我认为这在大多数RDBMS中是不可能的。即使是这样,我也不会建议您这样做--如果表中已经有行,则应该从MAX_ROWS + 1开始。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20236984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档