私のSQL Serverデータベース内では、これID
を例として取得しましSSK0000001
た。
システムで自動インクリメントしたいのですが、ID
たとえば「1」の最後の番号(別の新しいレコードの後、それは になりSSK0000002
ます)がSQL Serverデータベースで更新されます。
データベース内で自動インクリメントを設定して実行できることはわかっていますが、今ID
はnchar
.
誰でも助けていただければ幸いです。
私のSQL Serverデータベース内では、これID
を例として取得しましSSK0000001
た。
システムで自動インクリメントしたいのですが、ID
たとえば「1」の最後の番号(別の新しいレコードの後、それは になりSSK0000002
ます)がSQL Serverデータベースで更新されます。
データベース内で自動インクリメントを設定して実行できることはわかっていますが、今ID
はnchar
.
誰でも助けていただければ幸いです。
自動インクリメント列に基づく計算列を使用できます。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
右側を 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 を貼り付けます