【发布时间】:2013-06-06 03:24:48
【问题描述】:
我的数据库中有帖子和组织。 Posts belongs_to 组织和组织 has_many 帖子。
我的帖子表中有一个现有的 post_id 列,现在我在创建新帖子时手动增加该列。 如何将自动增量添加到限定为 organization_id 的列?
目前我使用 mysql 作为我的数据库,但我计划切换到 PostgreSQL,所以如果可能的话,该解决方案应该适用于两者:)
非常感谢!
【问题讨论】:
-
1.您所说的“自动增量......范围为组织ID”到底是什么意思? 2. 为什么要它(关心人工密钥的精确值通常没有帮助)?
-
我希望 post_id 依赖于组织。假设我们有两个组织。组织一创建第一个帖子: id: 1 post_id: 1 title: "Hello world" organization_id: 1 然后组织二创建一个帖子: id: 2 post_id: 1 title: "Hello another world" organization_id: 2 所以 post_id 将当另一个组织发布新职位时,不会增加。基本上就是这个想法。当您从组织 2 中删除帖子 1 时,下一个 post_id 当然应该是 2。所以基本上post_id不会根据其他组织的帖子而增加。
-
你还没有解决“为什么?”在我的评论中。另外,我不清楚您是否发现编号中的漏洞可以接受。或者如果您尝试更新 post_id 会发生什么。您是否意识到尝试做此类事情时的各种并发/组织问题?这个问题的简短回答是“不要那样做”,但这本身并不是很有帮助。所以 - 你需要解释你为什么要这样做,以便有人可以提出更好的方法。
-
感谢您的回复。首先,是的,我们的 post_id 中的漏洞是可以接受的。这是强制性的。其次,我们公司需要这样做的原因是,我们希望 post_id 绝对唯一,并且我们不想在视图中显示主键(id)本身作为后指示符,因为我们希望组织范围。我并不是说我们使用 post_id 来指代帖子。当然,我们使用 id 本身。所以基本上post_id只是为了用户的利益,需要在视图中显示为post指示符。
标签: ruby-on-rails postgresql migration auto-increment database-migration