sql >> Databasteknik >  >> RDS >> PostgreSQL

Problem med att ställa in en anpassad primärnyckel i en Rails 4-migrering

Ta en titt på det här svaret. Försök att execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);" utan att ange parametern primärnyckel i create_table-blocket.

Jag föreslår att du skriver din migrering så här (så att du kan återställa normalt):

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: Det finns ett naturligt sätt (finns här), men bara med 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


  1. Rails Migration:Bigint på PostgreSQL verkar misslyckas?

  2. Platta ut aggregerade nyckel/värdepar från ett JSONB-fält?

  3. MySQL-konverteringsfunktion

  4. Typer av SQL JOIN