Sto distribuendo un'app di rotaie a heroku che utilizza PostgreSQL come back-end. Nella mia migrazione del database normalmente settaggio il campo ID per cose come i resoconti ecc. Almeno a 1000, la maggior parte dei clienti non sembra gradire iniziare a 1.Come posso impostare il punto di partenza per la colonna della chiave primaria (ID) in Postgres tramite una migrazione delle rotaie
Normalmente utilizzo mysql e aggiungo semplicemente uno sql specifico dopo la mia tabella creazione:
def self.up
create_table :reports do |t|
t.references :something
...
end
execute("ALTER TABLE reports AUTO_INCREMENT = 1000;")
end
qualcuno sa come posso acheive lo stesso per PostgreSQL, idealmente vorrei la migrazione di costruire la tabella stessa in modo che non dB specifico.
Immagino che un modo stupido per raggiungere il mio obiettivo sarebbe quello di creare e cancellare 999 record in un ciclo, ahi.
Grazie sia per l'aggiornamento, ho appena tirato giù un dump del DB, sembra che questo è l'unico: CREATE SEQUENCE reports_id_seq INCREMENTO PER 1 NO MAXVALUE NO MINVALUE CACHE 1; – tsdbrown
Sì, è possibile impostare l'inizio al momento "CREA SEQUENZA", nel qual caso basta aggiungere "START 1000" all'istruzione. Ma per cambiarlo in seguito è necessario il comando 'ALTER', non' CREATE'. –
Haha grazie, non stavo cercando di usare il comando CREATE, semplicemente evidenziando cosa "era" stato usato per generare la sequenza, cioè l'SQL generato dal file di migrazione. Ho usato l'ALTER e il RESTART come hai detto e ha funzionato come un incantesimo. Se userò Postgres in un'app di produzione, mi assicurerò di leggerlo. – tsdbrown