我正在尋找一種方法來創建自動增加自動:id列的方式的列。我可以在模型中以某種方式處理這個問題,但這似乎是kludgey。我還沒有找到任何處理這個問題的股票Rails 3;有沒有可以處理這個問題的寶石?我很驚訝這不是一個選項,因爲Rails處理主鍵列的這種行爲。Rails 3遷移:(非主鍵)列上的自動增量?
3
A
回答
0
如果你真的認爲你需要這個,你可以在模型中創建一個before_create過濾器來檢查最後一個記錄屬性值,並向其中添加1。感覺雖然黑客攻擊。
+0
我同意 - 它似乎hackish。至於爲什麼我需要這樣的事情:自動增量不僅僅適用於數據庫領域的主鍵。在這種情況下,我添加了一系列步驟,並且不太需要明確地編號,Rails可以爲我做這些。我可能需要寫這個寶石。 – sabat
1
通常使用數據庫序列實現自動遞增列。使用序列計算下一個增量的優點是,從序列中獲取下一個值是原子的。所以如果你有多個進程創建新的元素,序列將確保你的數字是真正獨特的。
序列可以在PostgreSQL裏,Oracle,MySQL等使用,...
如何實現這一點,如果你正在使用例如Postgres的:
選擇序列的下一個值:
Integer(Operator.connection.select_value("SELECT nextval('#{sequence_name}')"))
創建序列:
Operator.connection.execute("CREATE sequence #{sequence_name}")
組序列的開始值:
Operator.connection.execute("SELECT setval('#{sequence_name}', #{new_start_serial})")
希望這有助於。
相關問題
- 1. 使用phinx遷移庫的非主鍵列的自動增量
- 2. JPA自動增量非主鍵列
- 3. 如何管理Rails中的非自動增量主鍵?
- 4. Rails 3 ActiveRecord save()方法和自動增量主鍵字段
- 5. 分貝:自動:在遷移的Rails 3
- 6. 的SQLite自動增加非主鍵
- 7. 使用rails遷移創建丟失的自動增量屬性
- 8. Laravel 4:如何使用遷移創建非主自動遞增列?
- 9. 鍵列自動增量
- 10. 在Ruby on Rails中自動增加非主鍵字段
- 11. 的Rails 3:遷移HABTM,主鍵的問題
- 12. 使用Fluent NHibernate的非主鍵身份自動增量映射
- 13. 對於Oracle中的非主鍵列自動遞增
- 14. 非主鍵列的自動遞增數字生成
- 15. 導軌遷移除去鍵和添加數據到自動增量列ID
- 16. SQL插入多個條目非自動增量主鍵
- 17. Hibernate/JPA SQLServer主鍵自動增量
- 18. 如何創建自動增量主鍵?
- 19. 兩個主鍵&自動增量
- 20. SQLite:雙主鍵和自動增量
- 21. 整數主鍵不自動增量
- 22. 更改主鍵和自動增量
- 23. 如何重置ActiveRecord遷移中的自動增量字段?
- 24. 複合主鍵和自動增量列,但不是主要的關鍵
- 25. 如何根據列的順序添加自動增量主鍵?
- 26. 如何指定主鍵列的自動增量值?
- 27. 創建一個不是主鍵的自動增量列
- 28. SQL Server中自動增量主鍵的上限
- 29. 按列自動排序(非主鍵)
- 30. Rails 3遷移:添加引用列?
主鍵列自動增量是因爲數據庫本身,MySQL或您使用的任何DBMS都會使用每條新記錄遞增主鍵。爲什麼你需要另一個增量列? – Alex
那麼,如果您不打算更改數據庫,則可以在遷移中始終使用「執行」以在原始SQL中添加另一個序列/自動遞增字段。但是,如果你最終會得到兩列都是自動遞增的列,那它們是不是真的是同一列?我意識到一個純粹主義者會在這一點上擊敗我,但是... – jaydel