在我的代碼中,我傾向於使用很多Flags枚舉,這些Flags枚舉對應於包含所有行爲屬性的數據庫表。 通過這種方式,可以在SP和使用枚舉的C#代碼中使用行爲屬性。有沒有辦法產生2的冪次遞增的身份或序列?
我的問題是與Flags屬性附加到它們的枚舉。
有沒有辦法自動生成2的權力作爲標識列(或作爲一個序列)這樣的表?
PS:目前我手動放置在小表的代碼 - 點擊後,我更喜歡自動執行
在我的代碼中,我傾向於使用很多Flags枚舉,這些Flags枚舉對應於包含所有行爲屬性的數據庫表。 通過這種方式,可以在SP和使用枚舉的C#代碼中使用行爲屬性。有沒有辦法產生2的冪次遞增的身份或序列?
我的問題是與Flags屬性附加到它們的枚舉。
有沒有辦法自動生成2的權力作爲標識列(或作爲一個序列)這樣的表?
PS:目前我手動放置在小表的代碼 - 點擊後,我更喜歡自動執行
據我所知,答案是NO。身份是爲了增加您指定的種子值,默認爲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,以便生成1,3,5,7的ID(如果這就是你所追求的)?
編號:(?上插入使用觸發器)read here
,但你可以保持身份代理鍵 那你就用另一列這始終是2^ID對於你的2^n值 或者你可以使用普通的ID,畢竟如果你使用Flags屬性,你只需要指數,對吧?
一起工作感謝閱讀材料 –
難道你不認爲身份是位的位置,從0開始?所以標誌位變成'1 << id'。 – hyde
@hyde至於使用指數 - 我想要一個簡單的方法來將值加載到我的C#代碼 - 如果我保持該值 - 我可以在C#代碼中正確處理它。即使在SP中,我也可以使用&相當簡單 - 唯一不容易的是,這種用法沒有內置的支持。 理想情況下,我希望能夠使用類似這樣的東西,甚至作爲一個外鍵 - 這樣一個包含幾個這樣的值的添加的列將被sql服務器視爲引用ref表中的所有適當的行。 –