0

私のSQL Serverデータベース内では、これIDを例として取得しましSSK0000001た。

システムで自動インクリメントしたいのですが、IDたとえば「1」の最後の番号(別の新しいレコードの後、それは になりSSK0000002ます)がSQL Serverデータベースで更新されます。

データベース内で自動インクリメントを設定して実行できることはわかっていますが、今IDnchar.

誰でも助けていただければ幸いです。

4

3 に答える 3

2

自動インクリメント列に基づく計算列を使用できます。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
于 2012-12-05T09:20:57.837 に答える
1

右側を 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 ), ... )

しかし、これはあなたが取ることができる最も汚い解決策です:

  • これにより、多くのデータベースロックが発生します(集計機能のため)
  • 自動インクリメントより遅い
  • 保持するコードがたくさんあります。

自動インクリメント データ型に移行することをお勧めします

于 2012-12-05T08:54:59.573 に答える
0

私の頭に浮かぶ最初の解決策は

  • IDを分解して、SSKを番号から分離します

  • 数を増やす

  • 次に、番号を付けて SSK を貼り付けます

于 2012-12-05T08:54:05.407 に答える