PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Probleme beim Festlegen eines benutzerdefinierten Primärschlüssels bei einer Rails 4-Migration

Sehen Sie sich diese Antwort an. Versuchen Sie, execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);" ohne Angabe des primary_key-Parameters im create_table-Block.

Ich schlage vor, Ihre Migration so zu schreiben (damit Sie normal zurücksetzen können):

class CreateShareholders < ActiveRecord::Migration
  def up
    create_table :shareholders, id: false do |t|
      t.integer :uid, limit: 8
      t.string :name
      t.integer :shares

      t.timestamps
    end
    execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);"
  end

  def down
    drop_table :shareholders
  end
end

UPD: Es gibt einen natürlichen Weg (hier gefunden), aber nur mit int4-Typ:

class CreateShareholders < ActiveRecord::Migration
  def change
    create_table :shareholders, id: false do |t|
      t.primary_key :uid
      t.string :name
      t.integer :shares

      t.timestamps
    end    
  end
end