‘壹’ 如何手动重置sql 主键ID
怎么重置有标识的主键,有时主键ID,设置自动增量后,要怎么重置:如 ID 主用用到SQL的这个功能: dbcc checkident(test, reseed, 0)
‘贰’ SQL数据库列自动生成编号
两种方法:
1、用Truncate
TRUNCATETABLEname可以删除表内所有值并重置标识值
2、用DBCC CHECKIDENT
DBCCCHECKIDENT('table_name',RESEED,new_reseed_value)如dbcc checkident ("bc_pos",reseed,1)即可,
但如果表内有数据,则重设的值如果小于最大值可能会有问题,这时可以用 dbcc checkident("bc_pos",reseed)即可自动重设值。
注意:
只能为不允许空值且数据类型为 decimal、int、numeric、smallint、bigint 或 tinyint 的列设置标识属性。此外,不能为主键列设置标识属性。
(2)sqlreseed扩展阅读:
关于上述标识列的引用
如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替,例如,若要查询上例中ID等于1的行,
以下两条查询语句是等价的:
1、SELECT * FROM T_test WHERE IDENTITYCOL=1
2、SELECT * FROM T_test WHERE
‘叁’ SQL Server 命令dbcc checkident(表名,reseed,0) 有的表1开始 有的0开始为什么怎么让他都从1开始
1、语句是起效的。如果是reseed, 0,则新的ID将为0;
如果都写dbcc checkident(表名,reseed,1) ,是不是从1开始 -- yes
2、此语句只是设置了新的计数器,对于表中已经有的记录,不作改变;
3、新的seed,尽量>表中已有记录的最大值(该ID字段)。否则,不断运行,有可能出现“重复值”错误
4、如果想循环使用,通常使用mod运算符来处理,并及时删除过期数据
‘肆’ 怎样在sql2005中重置自动编号
在SQL Server中,要将表中的自动编号ID重新开始排列有两种方法:
方法1:
truncate table 你的表名 --这样不但将数据删除,而且可以重新置位identity属性的字段。
truncate table jsq
方法2:
delete from 你的表名?
dbcc checkident(你的表名,reseed,0) 重新置位identity属性的字段,让其下个值从1开始?
truncate命令不但会清除所有的数据,还会将IDENTITY的SEED的值恢复到原是值。
而DBCC CHECKIDENT则更加方便一些,可以在不删除数据的情况下指定SEED的值。
1. truncate table tablename
2. DBCC CHECKIDENT (tablename,reseed,1)
‘伍’ 怎样清空SQL Server以前的数据
delete from 表名
删改表中以前的数据。。。
‘陆’ 为什么我的sql 插入失败 请高手解答!
请把提示信息帖出来,插入失败一般原因:
1.字段和值不一致。
2.数据类型强制转换错误。
3.标点符号。
4.数据类型长度。
通过上述几个方面可以找出你的问题答案,当然原因不止这一些。