Erstellen einer PostgreSQL-Sequenz in einem Feld (das ist nicht die ID des Datensatzes)

7

Ich arbeite an einer Ruby on Rails App. Wir verwenden eine PostgreSQL-Datenbank.

Es gibt eine Tabelle namens scores mit den folgenden Spalten:

%Vor%

Ich muss eine Sequenz zu job_id hinzufügen (Anmerkung: Es gibt kein Modell für job ).

Wie erstelle ich diese Sequenz?

    
Tanvir 09.07.2014, 15:26
quelle

2 Antworten

20

Verwenden Sie CREATE SEQUENCE :

%Vor%

Fügen Sie dann einen Spaltenstandard zu scores.job_id :

hinzu %Vor%

Wenn Sie bind die Sequenz an die Spalte binden möchten (also gelöscht wird, wenn die Spalte gelöscht wird), führen Sie auch:

aus %Vor%

All dies kann durch den Pseudodatentyp ersetzt werden serial , damit die Spalte job_id mit beginnen kann:

Wenn Ihre Tabelle bereits Zeilen enthält, sollten Sie SEQUENCE auf den nächsthöheren Wert setzen und fehlende serielle Werte in der Tabelle eingeben:

%Vor%

Optional:

%Vor%

Die einzige verbleibende Differenz, eine serial -Spalte, wird ebenfalls auf NOT NULL gesetzt. Vielleicht möchten Sie das auch:

%Vor%

Aber Sie können nicht nur den Typ eines vorhandenen integer :

ändern %Vor%

serial ist kein tatsächlicher Datentyp. Es ist nur eine Notationsfunktion für CREATE TABLE .

    
Erwin Brandstetter 09.07.2014, 17:13
quelle
13

So habe ich herausgefunden, wie man das mit ActiveRecord-Migrationen auf Ruby on Rails macht. Ich benutzte im Grunde Erwins Befehle und Hilfe von dieser Seite und setzte sie in den Migrationsdateien. Dies sind die Schritte:

1. Geben Sie im Terminal Folgendes ein:

%Vor%

2. Bearbeiten Sie die Migrationsdateien wie folgt:

20140709181616_create_job_id_sequence.rb :

%Vor%

20140709182313_add_job_id_sequence_to_scores.rb :

%Vor%

3. Migrieren Sie die Datenbank. Im Terminaltyp:

%Vor%     
Tanvir 10.07.2014 15:40
quelle