Sql 如何在Rails中恢复已删除的型号id号?

Sql 如何在Rails中恢复已删除的型号id号?,sql,ruby-on-rails,Sql,Ruby On Rails,假设我有一个模特。当我删除最后一篇文章“Post24”时,我希望下一篇文章的id为Post24,而不是Post25 我想在视图中显示id,我不想丢失数字。我该怎么做 感谢您的帮助。id的用途只不过是一个内部标识符。它不应该公开使用。这不是Rails的问题,而是数据库问题。MySQL不会回收id,因为这可能会导致应用程序出现非常严重的问题。如果一条记录被删除,它的id将永远保留,这样以后就不会有记录被误认为它了 然而,有一种方法可以做你想做的事。我相信您需要一个位置整数列。将其添加到模型/表中,然

假设我有一个模特。当我删除最后一篇文章“Post24”时,我希望下一篇文章的id为Post24,而不是Post25

我想在视图中显示id,我不想丢失数字。我该怎么做


感谢您的帮助。

id的用途只不过是一个内部标识符。它不应该公开使用。这不是Rails的问题,而是数据库问题。MySQL不会回收id,因为这可能会导致应用程序出现非常严重的问题。如果一条记录被删除,它的id将永远保留,这样以后就不会有记录被误认为它了

然而,有一种方法可以做你想做的事。我相信您需要一个位置整数列。将其添加到模型/表中,然后安装

按常规方式安装:

script/plugin install git://github.com/rails/acts_as_list.git
然后将挂钩添加到模型中:

class Post < ActiveRecord::Base
  acts_as_list
end

现在,post模型的position列将自动跟踪自身,没有序列间隙。如果您愿意,它甚至可以为您提供一些方便的重新排序方法。

id的目的只是作为内部标识符。它不应该公开使用。这不是Rails的问题,而是数据库问题。MySQL不会回收id,因为这可能会导致应用程序出现非常严重的问题。如果一条记录被删除,它的id将永远保留,这样以后就不会有记录被误认为它了

然而,有一种方法可以做你想做的事。我相信您需要一个位置整数列。将其添加到模型/表中,然后安装

按常规方式安装:

script/plugin install git://github.com/rails/acts_as_list.git
然后将挂钩添加到模型中:

class Post < ActiveRecord::Base
  acts_as_list
end

现在,post模型的position列将自动跟踪自身,没有序列间隙。如果您愿意,它甚至可以为您提供一些方便的重新排序方法。

相反,您可以让SQL自己完成这项工作:

SELECT rownum AS id, [whatever other columns you want]
FROM posts_table
WHERE [conditions]
ORDER BY [ordering conditions]
这将向每行添加数字,而不会像您所说的那样跳过任何数字


注意:我使用Oracle。我不知道这个确切的代码是否能在其他版本中工作。

相反,您可以让SQL自己做这件事:

SELECT rownum AS id, [whatever other columns you want]
FROM posts_table
WHERE [conditions]
ORDER BY [ordering conditions]
这将向每行添加数字,而不会像您所说的那样跳过任何数字


注意:我使用Oracle。我不知道这个确切的代码是否适用于其他版本。

+1这正是我在阅读这个问题时考虑的答案,包括使用acts_as_list。啊,我明白了……我想显示我的归档栏中的帖子编号。谢谢你的建议。如果你已经有一个不同的整数列要使用,或者你不想叫它position,你可以用一个参数来调用钩子:acts_as_list:column=>“archive”,例如+1这正是我想读这个问题的答案,包括使用acts_as_列表。啊,我明白了……我想显示我的档案栏中的帖子编号。谢谢你的建议。如果你已经有一个不同的整数列要使用,或者你不想叫它position,你可以用一个参数来调用钩子:acts_as_list:column=>'archive',例如。注意:在询问SQL答案时,说明你使用的是mysql、sqlserver、oracle、,etcNote:在询问SQL答案时,说明您使用的是什么类型的mysql、sqlserver、oracle等是很有帮助的