PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Problèmes de définition d'une clé primaire personnalisée dans une migration Rails 4

Jetez un oeil à cette réponse. Essayez d'execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);" sans spécifier le paramètre primary_key dans le bloc create_table.

Je suggère d'écrire votre migration comme ceci (afin que vous puissiez revenir en arrière normalement) :

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 : Il existe un moyen naturel (trouvé ici), mais uniquement avec le type int4 :

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