两种方法:
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 的列设置标识属性。此外,不能为主键列设置标识属性。
(1)sql数字编号扩展阅读:
关于上述标识列的引用
如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替,例如,若要查询上例中ID等于1的行,
以下两条查询语句是等价的:
1、SELECT * FROM T_test WHERE IDENTITYCOL=1
2、SELECT * FROM T_test WHERE
Ⅱ SQl数据库自动编号(连续)
假如你的原来的表tb有
id,name,address三列
其中id是自动增长列,
删除其中若干行以后,
你可以这样啊
创建存储过程
create proc getTempTable
as
begin
declare @temp table
(
id int identity(1,1),
name varchar(20),
address varchar(20)
)
insert @temp
select name, address from tb
select * from @temp
end
这样你就可以得到一个ID连续的新表了
Ⅲ 在SQL里面怎么修改ID,让ID以1到100这样做为编号
if object_id('tb') is not null
drop table tb
go
create table tb(id int, name varchar(20))
insert into tb select 1,'张三'UNION ALL
SELECT 23,'李四' UNION ALL
SELECT 10,'王五'
go
SELECT * FROM tb
/*
id name
----------- --------------------
1 张三
23 李四
10 王五(所影响的行数为 3 行)
*/
ALTER TABLE tb DROP COLUMN ID ALTER TABLE tb ADD id INT IDENTITY(1,1) NOT NULLSELECT RIGHT('000'+CAST(id AS VARCHAR(10)),3) AS id , name FROM TB
/*
id name
------ --------------------
001 张三
002 李四
003 王五(所影响的行数为 3 行)
*/
--建议存储的时候不要存001、002格式的,读出来的时候再做处理
Ⅳ sql数据库建表时如何实现自动编号
可以有两种办法啦:1.在企业管理器里面建:这种方法很简单点击选中的数据库右键新建即可相信你应该会不多说了。2.在查询分析器里建:基本思路要建表,表是要在库里建的所以你要先引用你要使用的数据库加进来再开始建表,以下为一个简单实例;create
database
student
--创建一个student数据库由于这里主要说建表所以建一个简单的数据库use
student
--引用数据库studentcreate
table
test(
--创建一个test表name
varchar(20)
primary
key
indentity(1,1),--列名(字段名)
数据类型
在此加主键约束就不用加非空约束
再加上自动增长列(含义从1开始增长增长量是1)password
varchar(10)
not
null
--注意建表最后一个字段名时结尾不要加逗号否则会出错)
Ⅳ 如何用SQL语句实现子分类中的不同项目自动添加数字编号
有个问题:你为什么强调“同一个ID下”?
如果跟是不是在“同一个ID下”没有半毛钱关系,你的问题可以简化成:查出来的每条记录里面SUB_NAME是存在的,SUB_ID是空着的,现在要把相同的SUB_NAME赋予相同的SUB_ID。
如果我的理解是正确的话,那么:
1、你另外建一张表,比如叫SUB_ID_NAME_COMP,然后一个字段是SUB_ID,另一个是SUB_NAME,然后你在这张表里面把对应关系整理好;
2、写下面这个脚本搞起:
select'updateAseta.sub1_id='||
(selectx.sub_id
fromSUB_ID_NAME_COMPx
wherex.sub_name=a.sub1_name)||',a.sub2_id='||
(selectx.sub_id
fromSUB_ID_NAME_COMPx
wherex.sub_name=a.sub2_name)||'wherea.sub1_name='||
A.SUB1_NAME||'anda.sub2_name='||A.sub2_name||';'
fromA;
其它,如果跟“同一个ID”有关系的话,上面的脚本在写的时候再把ID相关的信息带进去做好控制。
Ⅵ SQL怎样自动生成编号格式如:BV+YYYYMM+编号
使用触发器来实现
create table test(
id varchar(20),
sname varchar(20)
)
create TRIGGER [test_insert] ON [dbo].[test]
INSTEAD OF INSERT
AS
declare @str varchar(20)
declare @i integer
set @str = 'BV'+left(convert(char,getdate(),112),6)
select @i=isnull(max(cast(right(rtrim(id),len(id)-8) as integer)),0) from
(select id from test where id like @str+'%') a
set @i=@i+1
INSERT INTO TEST
SELECT @STR++cast(@i as char)as id,sname from inserted
上面建好后执行:
insert into test(sname) values('test')
id字段会自动编好号
Ⅶ sql数据库自动产生编号问题
不建议使用触发器,非常影响速度。
用存储过程,用T-SQL语句生成。
另外由于随机数也可能产生重复值,还需要检查重复值的情况。
我个人建议是,不使用随机码,而是最大编号加1.
Ⅷ sql中怎么自动写自己想要的编号啊
以下是4位流水,自己改成存储过程
--不存在A流水号时,插入A新记录一条
IF NOT EXISTS (SELECT 1 FROM 表名 WHERE 流水号 LIKE 'A%')
BEGIN
INSERT INTO 表名(流水号) VALUES ('A00001')
END
ELSE --存在取得最大流水号,然后+1为当前流水号
BEGIN
SELECT 'A' + RIGHT( '0000'+LTRIM(MAX(RIGHT(ID,4))+1) , 4 )
FROM 表名
END
如需5位改成5个0 ,右边截取5位
SELECT 'A' + RIGHT( '00000'+LTRIM(MAX(RIGHT(ID,5))+1) , 4 )
FROM 表名
Ⅸ SQL进行编号,请教一下这段语句的意思!
CREATE trigger INSERT_主生产计划
on 主生产计划
for INSERT --在表 “主生产计划” 上建立插入触发器
AS
Begin
declare @bh1 varchar(16) --生名字符变是 @bh1
declare @bh2 varchar(16)
select @bh1 = isnull(max(编号),'MPS0000000000') from 主生产计划 --对变量 @bh1 赋值 如果最大编号是空 @bh1设为MPS0000000000
select @bh2 = isnull(max(编号),'MPS0000000000') from 主生产计划历史
if(@bh2>@bh1) select @bh1 = @bh2 --如果历史记录编号大 将现有编号设为历史编号
declare @no varchar(10)
select @no = substring(@bh1,4,10) --取@no 为 @bh1开始的后10 位 如 @bh1=MPS0000000000 @no=0000000000
select @no = convert(char(10),convert(int,@no)+1) --@no 转成数字+1再转成字串
select @no = REPLICATE('0',10-LEN(@no))+@no --@no 转成10位字串 不足左侧补0
update 主生产计划 set 编号='MPS' + @no where 编号 is null --更新表 主生产计划 编号为 @no 条件是条有编号为
End
加了注释。不知到能不能看明白