在我的代码中,我倾向于使用很多标志枚举,这些枚举对应于包含所有行为属性的数据库表。这样,行为属性可以在 SP 和使用枚举的 C# 代码中使用。
我的问题是附加了 Flags 属性的枚举。
有没有办法自动生成 2 的幂作为此类表的标识列(或序列)?
PS:目前我手动将代码放在小表中 - 或以编程方式放在随时间变化的表中 - 我更喜欢自动执行
在我的代码中,我倾向于使用很多标志枚举,这些枚举对应于包含所有行为属性的数据库表。这样,行为属性可以在 SP 和使用枚举的 C# 代码中使用。
我的问题是附加了 Flags 属性的枚举。
有没有办法自动生成 2 的幂作为此类表的标识列(或序列)?
PS:目前我手动将代码放在小表中 - 或以编程方式放在随时间变化的表中 - 我更喜欢自动执行
据我所知,答案是否定的。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
否:阅读此处
但是您可以将身份保留为代理键,然后使用始终为 2^id 的另一列(在插入时使用触发器?)作为您的 2^n 值,或者您可以只使用普通 id,毕竟如果您正在使用Flags 属性你只需要指数,对吧?
在列属性的“身份规范”部分(单击表格上的“设计”后可见),您可以将“身份增量”设置为 2,以生成 1、3、5、7 的 id(如果这是您的话)重新追求?