我正在創建CRUD過程,該過程可以複製傳統程序,該程序根據單獨表中的「下一個ID」字段生成唯一標識。我沒有重複使用單獨的表,而是編寫了一個存儲過程來讀取表中的行數。在存儲過程中創建唯一標識以與傳統數據匹配
CREATE PROCEDURE [TLA_CreateItem]
@SiteReference varchar(50)
,@ItemID varchar(4)
,@NewUniqueID varchar(68) OUTPUT
AS
BEGIN
DECLARE @Rows varchar(12)
SET @Rows = (CONVERT(varchar(12), (SELECT Count(UniqueID) FROM [TLA_Items]) + 1))
SET @NewUniqueID = @ItemID + @SiteReference + @Rows
INSERT INTO [TLA_Items] ([ItemID], [UniqueID])
VALUES (@ItemID, @NewUniqueID)
SELECT @NewUniqueID
END
我已經簡化上面的代碼,但什麼是不顯示的是,TLA_Items
表也有一個IDENTITY
列,它需要與SQL Server 2008工作
的UniqueID的字段匹配傳統程序的模式:ItemID + SiteReference + (integer representing number of previous records)
但是,當測試這個時,我發現我的邏輯有缺陷。如果刪除行,則可以創建與現有行匹配的唯一標識。這在遺留系統中不會發生,因爲很少刪除行,並且單獨的表存儲序列中的下一個數字。
除了將下一個ID值存儲在單獨的表中,是否有更好的技術來創建與舊版模式相匹配的唯一ID?
SQL Server 2008 –