如何在SQL Server 2008中實作自動編號?

王林
發布: 2024-01-09 20:38:08
轉載
619 人瀏覽過

sql server 2008怎麼自動編號

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

一。透過SQL管理工具修改列的識別屬性

1. 在物件資源管理器中,右鍵點選要變更其資料類型的資料列所在的表,再按一下「修改」。這樣,該表會在表格設計器中被開啟。

2.清除要變更的列的「允許空」複選框。

3.在「列屬性」標籤中,展開「標識規範」屬性。

4.按一下「是標識」子屬性的網格單元格,然後從下拉清單中選擇「是」。

5. 在"標識種子"單元格里輸入數值。這個數值將會分配給表格的第一行。預設情況下,這個數值會是1。

6. 在"標識增量"儲存格中鍵入數值。此數值是基於"標識種子"逐行遞增的增量。預設情況下,增量被設定為1。

二。 SQL語句來建立

建立表格時指定自動編號的欄位

CREATE TABLE [dbo].[UserInfor](

[UserID] [int] IDENTITY(100,2) NOT NULL, --此處可指定初始值和遞增步長

[UserName] [nchar](10) NOT NULL, )

關於sql server自動編號問題

你可以建立一個表格,並將其中的某一列(例如“ID”)的“標識列”屬性設為“是”,然後設定其種子(初始值)和遞增量。例如,如果你將種子設為1,遞增量設定為1(預設值),那麼產生的ID序列將會是:1、2、3、4、…

在記錄數量不是特別多(大於1000萬條)時,這個值是唯一的,也就是不會出現兩者相同的情況。

但這樣會有一個問題,像是你順序產生了10筆記錄:

1、2、3、4、5、6、7、8、9、10

然後你刪除了3號記錄,這樣剩下的記錄就是:

1、2、4、5、6、7、8、9、10

如果你希望編號是從1開始逐漸遞增,中間不隔間的話,你可以設定另一個非識別列,例如"number"。在新增記錄時,你可以使用以下方法:

在查詢語句中,你可以使用以下語句來選擇表中number欄位的最大值: SELECT @number = MAX(number) FROM tablename

insert into tablename(number) values(@number 1)

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

以上是使用SQL語句示範,但假設你使用預存程序來操作資料庫。如果你使用ASP語言,你可以用以下方式做:

psql = "SELECT MAX(number) AS maxnumber FROM tablename"

rs.open psql,conn,3,3

maxnumber=rs("maxnumber")

將最大number值讀出,然後再加1,再用於你的資料加入語句。

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

這樣就可以手動產生編號了,然後在刪除記錄的時候這樣寫程式:

' 假設要刪除的記錄編號為@n

delete tablename where number=@n

更新表名為tablename的記錄,將number欄位的值減1,但只有當number大於參數@n的值時才進行更新。

這樣做之後,我們就能重新整理編號順序,刪除記錄並且重新編號。同樣的,我也可以為你展示一段SQL語句示範,但這次用ASP SQL的程式碼就不再提供了,請自行參考與理解。

以上是如何在SQL Server 2008中實作自動編號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:docexcel.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板