sql >> Database >  >> RDS >> PostgreSQL

Problemen met het instellen van een aangepaste primaire sleutel in een Rails 4-migratie

Kijk eens naar dit antwoord. Probeer execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);" zonder de parameter primary_key op te geven in het create_table-blok.

Ik stel voor om uw migratie als volgt te schrijven (zodat u normaal kunt terugdraaien):

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: Er is een natuurlijke manier (hier te vinden), maar alleen met int4-type:

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. SIN() Voorbeelden in SQL Server

  2. Wachten op localhost, voor altijd!

  3. Hoe LPAD() werkt in MariaDB

  4. Oracle RAC VIP en ARP Primer