如果希望重新定義在表中添加新記錄時該列中自動生成並存儲於列中的序列號,則可以更改該列的標識屬性。在每個表中只能設置一個列的標識屬性。
具有標識屬性的列包含系統生成的連續值,該值唯一地標識表中的每一行(例如,雇員標識號)。在包含標識列的表中插入值時,Microsoft SQL Server 將基於上一次使用的標識值(標識種子屬性)和在創建列時指定的增量值(標識增量屬性)自動生成下一個標識符。
注意:
只能為不允許空值且數據類型為 decimal、int、numeric、smallint、bigint 或 tinyint 的列設置標識屬性。此外,不能為主鍵列設置標識屬性。
修改列的標識屬性
1.在對象資源管理器中,右鍵單擊要更改其數據類型的列所在的表,再單擊“修改”。此時,將在表設計器中打開該表。
2.清除要更改的列的“允許空”復選框。
3.在“列屬性”選項卡中,展開“標識規范”屬性。
4.單擊“是標識”子屬性的網格單元格,然後從下拉列表中選擇“是”。
5.在“標識種子”單元格中鍵入值。此值將賦給表中的第一行。默認情況下將賦值 1。
6.在“標識增量”單元格中鍵入值。此值是基於“標識種子”依次為每個後續行增加的增量。默認情況下將賦值 1。
例如,假設要為添加到 orders 表的每行自動生成 5 位 Order ID,從 10000 開始並且每次遞增 10。為此,應在“標識種子”中鍵入 10000,在“標識增量”中鍵入 10。
如果更改表的任何標識屬性,則將保留現有的標識值。新的設置值僅應用於添加到表中的新行。
注意:
如果頻繁執行刪除操作的表中存在標識列,則標識值之間會出現不連貫的情況。若要避免出現這種不連貫的情況,請不要使用標識屬性。
當您在網格單元格外單擊或使用 Tab 鍵移動到其他網格單元格後,“標識規范”屬性的新值將賦給表設計器中的列。當您在表設計器中保存更改時,這些值將在數據庫中生效。
1. 創建表時指定自動編號的字段
CREATE TABLE [dbo].[UserInfor]( [UserID] [int] IDENTITY(100,2) NOT NULL, [UserName] [nchar](10) NOT NULL, )
說明:創建一個用戶信息表UserInfor,並指定UserID為自動編號字段。
其中:IDENTITY(100,2)表示字段的初始值為100,每次增量為2,如輸入數據後第一次為100,第二次為102。
2.獲取自動編號的字段值
這裡可以使用@@IDENTITY取得自動增加字段主鍵的值
(3)重新設置自動編號字段種子的起始值
如果用戶將帶有自動增加字段的表內容清空,由該字段的起始值將從原有的值開始增加,可以通過DBCC命令重新設置起始值。
DBCC CHECKIDENT (UserInfor,RESEED,0)
將UserInfor表的自動增加字段種子起始值設置為0,插入一條數據後自動字段的值為0+增量,如增量為1,則值為1
----------------------------------------------
右鍵你的表-->設計表-->找到你的id字段(類int型)-->標識-->是-->標識種子(初始值)-->標識遞增量-->OK
---------------------------------
create table mytest ( id int primary key identity(1,1),--主鍵,自動+1 name varchar(20) unique not null,--不允許重復,不允許為空 Age tinyint, notetime smalldatetime default getdate() ) insert into mytest values ('張三',20,getdate()) insert into mytest (name,age)values ('李四',20)