書式設定された日付と自動インクリメントされた数値が追加されたSQL Server 2005テーブルにレコードを挿入するにはどうすればよいですか?
たとえば、今日の日付の場合、を使用 2013-04-09 12:05:44.640
するようにフォーマットできます。20130409
convert(varchar, getdate(), 112)
2013040900001
しかし、次のように2013040900002
レコードを挿入したいなど2013040900003
です。
書式設定された日付と自動インクリメントされた数値が追加されたSQL Server 2005テーブルにレコードを挿入するにはどうすればよいですか?
たとえば、今日の日付の場合、を使用 2013-04-09 12:05:44.640
するようにフォーマットできます。20130409
convert(varchar, getdate(), 112)
2013040900001
しかし、次のように2013040900002
レコードを挿入したいなど2013040900003
です。
システム全体の自動インクリメント番号を生成するための優れたソリューションは、タスク用に設計されたテーブルを使用することです。
CREATE TABLE [AutoInc]
(
[Number] INT IDENTITY (1,1) NOT NULL,
[Col1] CHAR(1) NOT NULL
);
次に、値をテーブルに挿入し、すぐに ROLLBACK で削除します。
BEGIN TRAN;
INSERT INTO AutoInc VALUES ('A');
ROLLBACK TRAN;
これにより、スペースが使用されないことが保証されますが (テーブルは常に空になります)、番号が作成されます (IDENTITY 属性によって生成された値はトランザクションに参加しないため)。その後、SCOPE_IDENTITY() 関数を使用してインクリメントされた値を取得し、それを日付に追加できます。
INSERT INTO yourtable (yourcol) VALUES (convert(varchar, getdate(), 112) + RIGHT('000000000' + CAST(SCOPE_IDENTITY() AS VARCHAR(10)), 10));