0

次のテーブル定義があります。

        CREATE TABLE Content (
            [ContentId] INT IDENTITY (1, 1) NOT NULL,
            [Title] NVARCHAR (50) Not NULL,
            CONSTRAINT [PK_Content] PRIMARY KEY CLUSTERED ([ContentId] ASC)
        )";

ID 列の代わりに、ContentId 用にランダムな 5 桁の番号を生成する必要があります。この番号は以前に使用されていないものです。

SQL Server 2012 に挿入するためのある種のデータベース トリガーでこれを行う方法はありますか?

4

2 に答える 2

2

100,000 個の値のみを扱っています。私の提案は、自動インクリメントされた ID を新しい ID にマッピングするためのルックアップ テーブルを作成することです。このようなテーブルを作成するコードは次のとおりです。

with nums as (
      select 0 as n
      union all
      select n + 1
      from nums
      where n < 9
     ),
     nums5 as (
      select n1.n*10000+n2.n*1000+n3.n*100+n4.n+10+n5.n as val
      from nums n1 cross join nums n2 cross join nums n3 cross join
           nums n4 cross join nums n5
    )
select val,
       row_number() over (order by newid()) as new_content_id
into LookupTable
from nums5;

このテーブルを使用して、自動インクリメント ID をテーブルに入れ、このテーブルから 5 文字の「new_content_id」を検索します。

于 2013-09-01T20:17:18.153 に答える