在我的代码中,我倾向于使用许多Flags枚举,这些枚举对应于包含所有行为属性的DB表。 这样,行为属性既可以在SP中使用,也可以在使用枚举的C#代码中使用。
我的问题在于附加了Flags属性的Enums。
有没有办法为这些表自动生成2的幂作为标识列(或序列)?
PS:目前我手动将代码放在小表中 - 或者以编程方式放置在随时间变化的表格中 - 我更喜欢自动执行
答案 0 :(得分:7)
据我所知,答案是否定的。标识意味着按您指定的种子值递增,默认值为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
答案 1 :(得分:0)
在列属性的“身份规范”部分(在表格上单击“设计”后可见),您可以将“身份增量”设置为2,以生成ID为1,3,5,7,如果是你在追求什么?
答案 2 :(得分:0)
但您可以将身份保留为代理键 然后你使用另一个列,它总是2 ^ id(在插入时使用触发器?)为你的2 ^ n值 或者你可以只使用普通的id,毕竟如果你使用Flags属性你只需要指数,对吗?