2011-11-28 98 views
1

我有一個非主鍵票號。字段在我的SQL服務器數據庫中格式是固定的,但包含不同的格式,例如Vou001..Vou002,TKO001 ... TKO002。對於每一個進入的記錄,我都需要增加最後一個記錄。所以Vou002之後的記錄是Vou003,在TKO004之後是TKO005。如何在不使用某種記錄計數方法的情況下執行此任務。由於表格將包含不同類型的TicketNo格式,我相信無法獲取最後一個表格值並添加它。請提供建議。謝謝。SQL Server +在SQL中增加非主鍵字段

+0

我認爲你需要使用觸發器GOR這一點;否則我沒有看到任何其他方式來做到這一點。 – Rahul

+0

您需要考慮的另一個問題(在解決這個問題後)是在簽發'Vou999'後發生的情況。 –

回答

2

每個代碼在這裏由1個部分:前綴(VouTKP等)和一個數字。

  • 可以經由序列仿真來產生數(或直接在SQL Server 2012)
  • 前綴可以被單獨地存儲或附加到序列寫入表

使用任何前即使鎖定提示,MAX類型或「滾動自己」對於2個併發/重疊調用也不是併發安全的。這些也會降低性能。

這DBA.SE問題顯示瞭如何模仿在SQL Server中的序列:https://dba.stackexchange.com/questions/3307/emulate-a-tsql-sequence-via-a-stored-procedure

1

,我建議你在這裏一看,這個問題是不完全一樣的,但我想這是一個良好的開端:How do I add string with auto increment value in SQL Server?

+0

+1是的 - 這是真正實現它的唯一可靠方法 - 讓數據庫處理自動增量,並將其添加到前綴中。 –

+0

@marc_s:可以通過模擬每個前綴的序列來完成。 MS有一篇關於它的文章(請參閱dba.se鏈接) – gbn

+0

對於我而言,字段格式可以不同,它實際上從另一個具有「格式化」字段列的表中檢索格式。 – k80sg