回答
看起来像你的ID
列是一个IDENTITY列 - 它们将总是添加下一个值(不管是否删除)。
有一个特定的ID的要求听起来像你的应用程序设计依赖于它,这是不好的做法。 ID字段确实有差距(这是正常的) - 您的应用程序不应该依赖它们。
无论如何,这里有几个这样做的方法:
对于一次性的,使用SET IDENTITY INSERT ON
:
SET IDENTITY INSERT dbo.myTable ON
INSERT INTO myTable
(ID, NAME)
VALUES
(1, 'H')
SET IDENTITY INSERT dbo.myTable OFF
要重新播种,你需要使用一个DBCC CHECKIDENT
命令,使用RESEED
:
DBCC CHECKIDENT('myTable', RESEED, 0)
一个简单的方法是将
TRUNCATE TABLE mytable;
代替
DELETE FROM mytable
从TRUNCATE TABLE (Transact-SQL)
如果表包含标识列,该列的计数器复位到用于列定义的种子值。如果未定义种子,则使用默认值1。要保留身份计数器,请改为使用DELETE。
的顺序插入+1,以便更聪明地使用DELETE + DBCC CHECKINDENT – InSane 2010-12-10 10:05:02
我想你想重新启动1自动生成的id列的值? 如果它是标识列,可以将种子值与德以下命令
DBCC CHECKIDENT('YourTableNameHere', RESEED, 0)
我假设你有你的ID列作为一个标识列,复位,要重置它在1再次启动,从表中删除所有行后。
首先,我想说有这样一个需求(ID值从1开始)往往意味着你在做什么有什么问题 - IDENTITY列的编号总是有空位,应该是视为不透明的斑点。它们似乎是整数,并且容易记住的事实仅仅是实现细节。
第二,如果你想要做这样的重置,你会使用DBCC CHECKIDENT
编辑
如果你确实依赖于这些ID值(比方说,因为他们”重用也在应用程序中使用),这是一个很好的指示器,列首先不应该具有IDENTITY属性。不幸的是,你不能直接删除这个属性 - 你不得不创建没有这个属性的表的副本,复制所有的行,删除原始表,并重命名副本。管理工作室会假装你可以删除该财产,但会做我刚才在幕后描述的。
数据库ID功能旨在确保不同的记录永远不会有相同的ID。这不仅对于同时存在的记录有效,而且对于在删除另一个之后插入的新记录也是有效的。这对避免冲突非常有用。虽然它似乎有时会打破一些人的品味,但并不能解决它。
如果您需要将自选号码分配给记录,请添加另一列。自动索引列应始终使用。其他用户告诉你如何摆弄索引,但非常小心地使用这个功能。
- 1. 在ADO记录集中插入空值
- 2. 从表中插入记录
- 3. 插入表中的记录
- 4. 如何在pl/sql中正确使用记录表和记录表插入表
- 5. 如何在GridView中插入记录
- 6. 如何插入一条记录到表
- 7. 在表中如何在rails3.0中一次插入多个记录?
- 8. 如何在codeigniter活动记录中使用select插入记录
- 9. 如何在任何表的中间插入新记录
- 10. 在asp.net中插入记录
- 11. 如何在Flask Eve中插入有记录和列表的记录?
- 12. 如何在特定表格中插入记录?
- 13. Codeigniter 2.0如何在两个表中插入记录
- 14. 如何在多对多关系表中插入记录?
- 15. 如何在使用光标的现有表中插入记录
- 16. 如何在表格中插入用户名记录
- 17. 如何在div下插入记录?
- 18. MYSQL表2中的表1更新记录插入新记录
- 19. 如何使用JDBC创建表和插入记录到表中?
- 20. 如何将一张表中的记录插入第二张表
- 21. MySQL表在数据之前插入空记录
- 22. 插入记录
- 23. 插入记录的外国表中JPA
- 24. C#如何:如果新的记录被插入到mysql表中
- 25. 根据同一表中的'主'记录在表中插入记录
- 26. 检查表是否没有记录,然后在表中插入3条记录
- 27. 如何在插入新记录到postgresql表时调用序列?
- 28. (MYSQL)如何插入记录只有当它不存在于表
- 29. 如何插入记录的N个表在单个命令
- 30. 如何检索表中的yesteraday插入记录?
@InSane,标识列是ID,我想通过ID(1,2,6,7,8 ...) – ozkank 2010-12-10 09:54:51