7

在我的代码中,我倾向于使用很多标志枚举,这些枚举对应于包含所有行为属性的数据库表。这样,行为属性可以在 SP 和使用枚举的 C# 代码中使用。

我的问题是附加了 Flags 属性的枚举。

有没有办法自动生成 2 的幂作为此类表的标识列(或序列)?

PS:目前我手动将代码放在小表中 - 或以编程方式放在随时间变化的表中 - 我更喜欢自动执行

4

3 回答 3

8

据我所知,答案是否定的。Identity 是按照你指定的种子值递增的,默认情况下是 1。但是你可以有 2 的倍数。例如 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

否:阅读此处

但是您可以将身份保留为代理键,然后使用始终为 2^id 的另一列(在插入时使用触发器?)作为您的 2^n 值,或者您可以只使用普通 id,毕竟如果您正在使用Flags 属性你只需要指数,对吧?

于 2012-11-20T12:02:06.973 回答
0

在列属性的“身份规范”部分(单击表格上的“设计”后可见),您可以将“身份增量”设置为 2,以生成 1、3、5、7 的 id(如果这是您的话)重新追求?

于 2012-11-20T11:46:24.797 回答