7

私のコードでは、すべての動作プロパティを含むDBテーブルに対応する多くのFlags列挙型を使用する傾向があります。このようにして、動作プロパティをSPと列挙型を使用するC#コードの両方で使用できます。

私の問題は、Flags属性が付加された列挙型にあります。

そのようなテーブルのID列(またはシーケンス)として2の累乗を自動的に生成する方法はありますか?

PS:現在、私は手動でコードを小さなテーブルに配置します-またはプログラムで時間の経過とともに変化するテーブルに配置します-私はそれを自動的に行うことを好みます

4

3 に答える 3

8

私の知る限り、答えはノーです。Identityは、指定したシードの値(デフォルトでは1)だけ増加することを意味します。ただし、2の倍数でIDを持つことができます。例:2,4,6,8,10

 id INT identity(2, 2)   -- starts at 2, increments by 2

他のものが必要な場合は、独自に実装する必要があります。

計算列

create table t
(
   id int identity, 
   power_id as power(2, id), 
   name varchar(50)
)

Results

ID  POWER_ID    TEXT
-------------------------------
1   2           SHORT      ----2^1
2   4           MEDIUM     ----2^2
3   8           LONG       ----2^3
于 2012-11-20T11:56:20.053 に答える
0

列プロパティの[ID仕様]セクション(テーブルの[デザイン]をクリックすると表示されます)で、[ID増分]を2に設定して、1、3、5、7のIDを生成できます。再後?

于 2012-11-20T11:46:24.797 に答える
0

いいえ:ここを読んでください

ただし、IDを代理キーとして保持し、2^n値に常に2^id(挿入時にトリガーを使用しますか?)である別の列を使用するか、プレーンIDを使用することができます。 Flags属性には、指数が必要ですよね?

于 2012-11-20T12:02:06.973 に答える