【问题标题】:Alternative for Serial type in RedShift / PostgreSQLRedShift / PostgreSQL 中串行类型的替代方案
【发布时间】:2013-08-22 19:46:35
【问题描述】:

我实际上是在尝试让 Rails 与 RedShift 一起工作,并面临 Rails 默认索引的一些问题。我的工作基于 repo activerecord-redshift-adapter。

默认情况下,Rails 使用 SERIAL 类型来创建他的主键。不幸的是,这不受 RedShift 支持。所以我实际上是在尝试找到这种 SERIAL 类型的替代品,然后在我们找到可行的解决方案后分叉 repo。我正在考虑一个 BIGINT,来自 RedShift offer

要更改的行位于此处redshit_adaptated.rb (Line 252)

任何提议,更好的解决方案?

【问题讨论】:

  • 您打算如何生成该序列? Redshift 还有CREATE SEQUENCE吗?因为如果是这样 - SERIAL 只是一个方便的伪类型,可以用CREATE SEQUENCE 替换,然后创建一个带有default nextval('sequence_name') 的bigint 列的表,最后是ALTER SEQUENCE .. OWNED BY
  • 我实际上不知道如何生成序列,这就是问题所在。RedShift 不支持 (see Sequence manipulation functions) CREATE SEQUENCE,如果 SERIAL 只是对此的约定,这是有道理的。还有其他想法吗?
  • 尝试创建标识列,以便 Redshift 生成序列号。如果你想保留现有的 Rails 序列号,那么从标识开始,可能是最大数量。

标签: ruby-on-rails primary-key auto-increment rails-postgresql amazon-redshift


【解决方案1】:

SERIAL 的直接替换是 IDENTITY(seed, step) 参考http://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多