sql >> Databasteknik >  >> RDS >> Mysql

Hur får jag ett slumpmässigt standardvärde för en kolumn i MySQL/Rails

Migreringar körs bara när du skapar en databas eller gör ändringar i databasens struktur, inte när du sparar en ny post. Mikhail har rätt när han föreslår en before_save ring tillbaka. Du kan göra något så här i din modell:

class Model < ActiveRecord::Base
  before_save :set_empty_color_to_random_value

  def set_empty_color_to_random_value
    self.color = Color.order("RANDOM()").first.color if self.color.empty?
  end
end

Observera att RANDOM() fungerar för PostgreSQL och SQLite, men inte för MySQL. För MySQL måste du använda RAND() istället.




  1. SQL Server trigger infoga värden från ny rad till en annan tabell

  2. MySQL:Konvertera INT till DATETIME

  3. Formatera UUID-sträng utan REGEXP_REPLACE och PL/SQL

  4. Subquerys rand()-kolumn omvärderas för varje upprepat val i MySQL 5.7/8.0 vs MySQL 5.6