Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 铁路及;Postgresql创建一个从1自动递增的字段_Ruby On Rails 3_Postgresql_Auto Increment - Fatal编程技术网

Ruby on rails 3 铁路及;Postgresql创建一个从1自动递增的字段

Ruby on rails 3 铁路及;Postgresql创建一个从1自动递增的字段,ruby-on-rails-3,postgresql,auto-increment,Ruby On Rails 3,Postgresql,Auto Increment,我希望在我的表orders中创建一个名为id\u visual的字段,该字段从1开始,然后自动递增。我可以在我的模型中创建一个方法来实现这一点,但我认为一定有更好更简单的方法。有什么想法吗?据我所知,您想要一个基于主id的辅助id?标识键只能基于表,不能依赖于其他键。您必须在代码中执行此操作,然后在创建之前将其保存到上的新字段中。最简单的方法是,对于要标识的每个订单,根据主键获得小于或等于您正在处理的订单的所有订单的计数。这是一个简单的单查询计算。这是您的数据库应该在某个级别上提供的,无论是在事

我希望在我的表
orders
中创建一个名为
id\u visual
的字段,该字段从1开始,然后自动递增。我可以在我的模型中创建一个方法来实现这一点,但我认为一定有更好更简单的方法。有什么想法吗?

据我所知,您想要一个基于主id的辅助id?标识键只能基于表,不能依赖于其他键。您必须在代码中执行此操作,然后在创建之前将其保存到上的新字段中。最简单的方法是,对于要标识的每个订单,根据主键获得小于或等于您正在处理的订单的所有订单的计数。这是一个简单的单查询计算。

这是您的数据库应该在某个级别上提供的,无论是在事务中还是使用其他锁定

看看这个问题,了解一些将postgres配置为自动递增列的方法:


一个受竞争条件约束的查询,一旦删除一行,您的计数就会失败。实际上,我最终这样做了,并在
accounts
表中存储了一个
orders\u count
字段,因此订单是否被删除并不重要。这一部分非常重要。