在我的SQL Server數據庫內部我把它當作我的ID
,例如SSK0000001
。SQL Server數據庫中的ID自動增加和更新
我希望它在我的系統中自動遞增,並且最後一個數字爲ID
,例如「1」(在另一個新記錄後它將變爲SSK0000002
)在我的SQL Server數據庫中更新。
我知道它可以在數據庫內設置自動增量,但現在我的ID
是nchar
。
任何人都可以幫助將不勝感激。
在我的SQL Server數據庫內部我把它當作我的ID
,例如SSK0000001
。SQL Server數據庫中的ID自動增加和更新
我希望它在我的系統中自動遞增,並且最後一個數字爲ID
,例如「1」(在另一個新記錄後它將變爲SSK0000002
)在我的SQL Server數據庫中更新。
我知道它可以在數據庫內設置自動增量,但現在我的ID
是nchar
。
任何人都可以幫助將不勝感激。
您可以將右側投射到int和增量:
declare @next int
select @next = convert(int, right(max(id), 7)) + 1
from your table
然後插入爲:
insert into ... (Id, ...)
values ( 'SDK' + right('0000000' + rtrim(ltrim(str(@next))), 7), ...)
但是,這是最骯髒的解決方案,你可以採取:
我建議你移動到一個自動增量數據類型
浮現在我的腦海裏第一個解決方案是
爆炸你的ID讓你從數
增量數
然後堅持回SSK與許多獨立的SSK
我建議閱讀此相關的問題
Create custom "auto-increment" Compound Primary Key?
另一個想法是使用此解決方案
撰寫的關鍵Set a custom identity value on a auto increment field
從微軟博客那些建議
http://forums.asp.net/t/1410179.aspx/1
但我最喜歡回答的不是最好的做法是這樣的:
創建一個用於存儲當前序列表中的值 創建一個函數來獲取並增加當前值 創建存儲過程以修改當前序列值 創建觸發器
這是MYSQL中的一個想法 http://en.latindevelopers.com/ivancp/2012/custom-auto-increment-values/
我希望對大家有用
問題是關於SQL Server的問題 – vstrien
對不起 – user1594895
你可以使用基於自動遞增列計算列。應該從SQL Server 2005向上工作。
CREATE TABLE [dbo].[TEST1](
[AUTO_ID] [int] IDENTITY(1,1) NOT NULL,
[ID] AS CAST(('SSK'+replace(str([AUTO_ID],(7),(0)),' ','0')) AS NCHAR(10)) PERSISTED,
[NAME] [nvarchar](10) NULL
) ON [PRIMARY]
GO
INSERT INTO TEST1 (NAME) VALUES ('NAME1')
INSERT INTO TEST1 (NAME) VALUES ('NAME2')
INSERT INTO TEST1 (NAME) VALUES ('NAME3')
SELECT * FROM TEST1
您可以在您的表上定義要自動更新的觸發器。 –
如果SSK總是一樣的,將它硬編碼到你的程序中或通過concatination查詢,並使用自動增量字段爲你完成這項工作。比任何你能寫的程序/觸發器快得多。如果沒有,添加列作爲varchar,並使PK('ssk列','自動增量列') –