兩種方法:
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
加了注釋。不知到能不能看明白