采用手動增長型字段選取sql server主鍵
sql server主鍵有多種選取的方式,下面為您詳解采用手動增長型字段選取sql server主鍵的方式,供您參考,希望對您有所啟迪。
既然自動增長型字段會帶來如此的麻煩,我們不妨考慮使用手動增長型的字段,也就是說sql server主鍵的值需要自己維護,通常情況下需要建立一張單獨的表存儲當前sql server主鍵鍵值。還用上面的例子來說,這次我們新建一張表叫IntKey,包含兩個字段,KeyName以及KeyValue。就像一個HashTable,給一個 KeyName,就可以知道目前的KeyValue是什么,然后手工實現鍵值數據遞增。在SQL Server中可以編寫這樣一個存儲過程,讓取鍵值的過程自動進行。代碼如下:
- CREATE PROCEDURE [GetKey]@KeyName char(10),
- @KeyValue int OUTPUT
- AS
- UPDATE IntKey SET @KeyValueKeyValue = KeyValue =
- KeyValue + 1 WHERE KeyName = @KeyName
- GO
這樣,通過調用存儲過程,我們可以獲得最新鍵值,確保不會出現重復。若將OrderID字段設置為手動增長型字段,我們的程序可以由以下幾步來實現:首先調用存儲過程,獲得一個OrderID,然后使用這個OrderID填充Order表與OrderDetail表,最后在事務保護下對兩表進行更新。
使用手動增長型字段作為sql server主鍵在進行數據庫間數據復制時,可以確保數據合并過程中不會出現鍵值沖突,只要我們為不同的數據庫分配不同的主鍵取值段就行了。但是,使用手動增長型字段會增加網絡的RoundTrip,我們必須通過增加一次數據庫訪問來獲取當前主鍵鍵值,這會增加網絡和數據庫的負載,當處于一個低速或斷開的網絡環境中時,這種做法會有很大的弊端。同時,手工維護主鍵還要考慮并發沖突等種種因素,這更會增加系統的復雜程度。
【編輯推薦】