Алтернатива за сериен тип в RedShift / PostgreSQL

Всъщност се опитвам да накарам Rails да работи с RedShift и се сблъсквам с проблем с индексите по подразбиране на Rails. Моята работа се основава на репо activerecord-redshift-adapter.

По подразбиране Rails използва типа SERIAL, за да създаде своя първичен ключ. За съжаление, това не се поддържа от RedShift. Така че всъщност се опитвам да намеря алтернатива на този SERIAL тип и след това разклонявам репото, след като намерим жизнеспособно решение. Мисля за BIGINT от това, което офертата на RedShift.

Редът, който трябва да бъде променен, се намира тук redshit_adaptated.rb (ред 252).

Някакво предложение, по-добро решение?


person Kim C.    schedule 20.08.2013    source източник
comment
Как възнамерявате да генерирате тази последователност? Redshift все още ли има CREATE SEQUENCE? Защото ако е така - SERIAL е само удобен псевдотип, който може да бъде заменен с CREATE SEQUENCE, след това създаване на таблица с колона bigint с default nextval('sequence_name') и накрая ALTER SEQUENCE .. OWNED BY.   -  person Craig Ringer    schedule 21.08.2013
comment
Всъщност не знам как да генерирам последователността, това е въпросът. RedShift не поддържа (вижте функциите за манипулиране на последователност) CREATE SEQUENCE, които имат смисъл, ако SERIAL е само конвенция за това. Някакви други идеи?   -  person Kim C.    schedule 09.09.2013
comment
Опитайте да създадете колона за идентичност, така че Redshift да генерира поредните номера. Ако искате да запазите съществуващите серийни номера на Rails, тогава започнете с идентичност от този максимален брой.   -  person androboy    schedule 18.09.2014


Отговори (1)


Директният заместител на SERIAL е IDENTITY(seed, step) Справочник http://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html

person Arthur    schedule 06.09.2016