在進行底下的工作之前,希望你能先了解 Identity 欄位的某些特性
Identity 欄位的資料型態必須是 int, smallint, tinyint, decimal 或者 numeric 。
不允許空值。
不可以設定預設值。
識別值增量可以是任何整數值 (1, -1, 5, ....等等),但不可以是小數或是 0
預設的識別值種子是 1,但是如果你沒有指定任何識別值種子的話,則識別值種子將變成 0。
能在新增資料到資料庫之後隨即取得 Identity 欄位的值是很方便的,你或許不曾想過我為什麼要取得這樣的值呢?坦白說,一般人使用的機會並不多,但是如果你想做某些特殊功能的時候,事先取得 Identity 欄位的值就變得很重要了,舉個例子來說,在一個樹狀結構的留言版或討論區中,想要呈現階層的關係必須使用遞回的方式來重複索引表格,有的時候會拖垮伺服器 (流量大的時候),為了要很快將資料從資料庫中讀出又不採用遞回的方式,這時候你可以用一個欄位儲存 Identity 欄位的值,就可以達成相同的效果,該怎麼做你們可以想想看。
現在就讓我們看看該如何做吧!!下面包含了三種方式,第三種方式是我比較建議大家使用的,其他兩種方式雖然也可以達成同樣的目的,但是第三種方式允許你可以一次插入多筆資料並取得個別的 Identity 欄位值,在擴充性來講我覺得比較好一點。
1.適用於所有 ADO 版本
<%Dim loConn, lsSQL, loRs
Set loConn = CreateObject("ADODB.Connection")
' 建立資料庫連結
loConn.Open "Provider=SQLOLEDB; Data Source=JACKIE; Initial Catalog=pubs; User ID=sa; Password= "
'新增一筆資料到資料庫內
lsSQL = "INSERT INTO tMembers (MemberName) VALUES ('Manohar')"
' 執行 SQL 敘述
loConn.Execute(lsSQL)
' 透過 @@IDENTITY 函數取得最後一筆資料的 Identity 欄位值,並傳給 IIID 變數
lsSQL = "SELECT @@IDENTITY AS NewID"
Set loRs = loConn.Execute(lsSQL)
llID = loRs.Fields("NewID").value
' 關閉資料庫連結
loConn.Close()
Set loConn = Nothing%>
留言列表