我必須在單個表中維護我公司的採購詳細信息,有三個採購部門涉及採購,他們正在維護自己的'採購訂單SlNo'.. ..創建自動生成ID的最佳做法是什麼
因此,我不能使用自動遞增的號碼,我應該使用像,
X-001
X-002
都只能屬於第一部門
Y-001
Y-002
所有的b elongs僅第二部門
Z-001
z-002
都只能屬於第三部門
任何一個可以建議我,並建議最佳做法是什麼? (使用C#)。
我必須在單個表中維護我公司的採購詳細信息,有三個採購部門涉及採購,他們正在維護自己的'採購訂單SlNo'.. ..創建自動生成ID的最佳做法是什麼
因此,我不能使用自動遞增的號碼,我應該使用像,
X-001
X-002
都只能屬於第一部門
Y-001
Y-002
所有的b elongs僅第二部門
Z-001
z-002
都只能屬於第三部門
任何一個可以建議我,並建議最佳做法是什麼? (使用C#)。
最好的解決方案是使用
ID INT IDENTITY(1,1)
列讓SQL Server處理你的數值的自動增量那麼試試這個:
CREATE TABLE dbo.tblCompany
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
CompanyID AS 'X-' + RIGHT('00000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED,
.... your other columns here....
)
現在,每次行插入tblCompany
沒有指定值ID
或CompanyID
:
INSERT INTO dbo.tblCompany(Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
那麼SQL Server將自動,安全地增加ID
價值,CompanyID
將包含類似X-00001
值, X-00002
,......等等 - 自動,安全,可靠,無重複。我不知道你在哪裏得到X-
,Y-
等前綴 - 你必須修改這個解決方案(用一個固定的前綴)到你自己的情況(改變前綴),但是基本的解決方案保持不變:讓SQL Server處理自動編號(這是唯一可行的方法),然後使用計算的持久性列添加額外的東西。
* SQL Server將自動安全地增加您的ID值*如果有100000條記錄,會發生什麼情況...... –
@ ta.speot.is:如果您需要支持超過100000行 - 您需要使用多於在'RIGHT'函數中有5個零.... –
我引用了錯誤的部分。 *公司ID將包含像X-00001,X-00002 ......等值 - 自動,安全,可靠,無重複。*示例代碼可能會產生重複。可以改進使用一些從「X-99999」到「X-100000」的算法。但是我一開始就給你+1了,因爲你的回答非常正確。 –
*創建自動生成ID *如果它們是自動生成的,則不需要創建它們。 –