SQL2005中設定自動編號字段

2021-08-26 03:51:34 字數 4062 閱讀 4496

如果希望重新定義在表中新增新記錄時該列中自動生成並儲存於列中的序列號,則可以更改該列的標識屬性。在每個表中只能設定乙個列的標識屬性。

具有標識屬性的列包含系統生成的連續值,該值唯一地標識表中的每一行(例如,雇員標識號)。在包含標識列的表中插入值時,microsoft sql server 將基於上一次使用的標識值(標識種子屬性)和在建立列時指定的增量值(標識增量屬性)自動生成下乙個識別符號。

注意:只能為不允許空值且資料型別為 decimal、int、numeric、smallint、bigint 或 tinyint 的列設定標識屬性。此外,不能為主鍵列設定標識屬性。

修改列的標識屬性

在物件資源管理器中,右鍵單擊要更改其資料型別的列所在的表,再單擊「修改」。此時,將在表設計器中開啟該錶。

清除要更改的列的「允許空」核取方塊。

在「列屬性」選項卡中,展開「標識規範」屬性。

單擊「是標識」子屬性的網格單元格,然後從下拉列表中選擇「是」。

在「標識種子」單元格中鍵入值。此值將賦給表中的第一行。預設情況下將賦值 1。

在「標識增量」單元格中鍵入值。此值是基於「標識種子」依次為每個後續行增加的增量。預設情況下將賦值 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)

-------------------------------------------

如果希望重新定義在表中新增新記錄時該列中自動生成並儲存於列中的序列號,則可以更改該列的標識屬性。在每個表中只能設定乙個列的標識屬性。

具有標識屬性的列包含系統生成的連續值,該值唯一地標識表中的每一行(例如,雇員標識號)。在包含標識列的表中插入值時,microsoft sql server 將基於上一次使用的標識值(標識種子屬性)和在建立列時指定的增量值(標識增量屬性)自動生成下乙個識別符號。

注意:只能為不允許空值且資料型別為 decimal、int、numeric、smallint、bigint 或 tinyint 的列設定標識屬性。此外,不能為主鍵列設定標識屬性。

修改列的標識屬性

在物件資源管理器中,右鍵單擊要更改其資料型別的列所在的表,再單擊「修改」。此時,將在表設計器中開啟該錶。

清除要更改的列的「允許空」核取方塊。

在「列屬性」選項卡中,展開「標識規範」屬性。

單擊「是標識」子屬性的網格單元格,然後從下拉列表中選擇「是」。

在「標識種子」單元格中鍵入值。此值將賦給表中的第一行。預設情況下將賦值 1。

在「標識增量」單元格中鍵入值。此值是基於「標識種子」依次為每個後續行增加的增量。預設情況下將賦值 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)

-------------------------------------------

SQL2005 自動備份的指令碼

此版本是始終只有最新的一版 我自己的用的是版本是每天都有乙個備份 複製 如下 declare dbname varchar 200 set dbname reportserver sql2005 截斷日誌 dump transaction dbname with no log 收縮資料庫 dbcc ...

grails 連線sql2005 詳細設定

問題研究了好久,今天終於思路開竅,解決了 下面把方法寫一下 sqljdbc 1.2.2828.100 chs.exe 裡面包含幫助檔案,or 到 http msdn.microsoft.com zh cn library ms378956.aspx 檢視 現在在 netbeans 中新建乙個工程 c...

SQL 2005 資料庫自動備份

具體步驟如下 1 開啟sql server management studio 2 啟動sql server 3 點選作業 新建作業 4 常規 中輸入作業的名稱 5 新建步驟,型別選t sql,在下面的命令中輸入下面語句 f db backup mrpii hm 改為自己的備份路徑,sql test...