フィールドのデフォルト値を0から3に変更する必要がありますが、キャッチはすでに何千ものレコードを持っていて、レコードがデフォルト値0を持つ場合にのみ0から3に値を変更します1,2のような値は同じままでなければなりません。どうすればいい?フィールドのデフォルト値を変更し、既存のレコードのすべての値を新しい既定値に変更するには、古い既定値がある場合にのみ移行します。
28
A
答えて
74
する列を強制想定しているあなたの自己を交換する場合ではありませんテーブルの設定を変更するchange_column:
change_column :my_models, :attribute_name, :integer, :default => 3
あなたがこの方法を使用することができます代わりにすべてのレコードをループしてそれらを個別に更新する、その後
そして、すべての既存のレコードを更新するには、次のようにupdate_all:
MyModel.update_all({ :attribute_name => 3 }, { :attribute_name => 0 })
を最初の引数は、設定するためにどのような価値の方法を伝え、2番目は伝えます更新する行の条件。
2
ALTER TABLE your_table MODIFY your_column tinyint(1) NOT NULL DEFAULT 3;
UPDATE your_table SET your_column=3 WHERE your_column=0;
- あなたの列が
tinyint(1)
であると仮定すると、同じ NOT NULL
あなたはいつもあなたがメソッドを使用する必要があり、移行にNOT NULl
関連する問題
- 1. 列の既定値を変更する
- 2. 既存の値に応じてdataGridViewの値を変更する
- 3. Laravelの移行で列の既定値が変更される
- 4. mysqlを更新して既存の値に値を加算する
- 5. テーブルが既に描画されている場合の値の変更方法
- 6. コントロールのプロパティの既定値を変更する(DataGridView)
- 7. 既存のフィールドの値を持つコレクションに新しいフィールドを追加する
- 8. フォームの値が存在する場合にのみ更新フィールド
- 9. EntityFrameworkが既定値で列を更新しない
- 10. 既定値で列のデータ型を変更する方法
- 11. PHPとMysqlを使用して新しい値を既存のデータベース値に結合するには
- 12. 列の後に新しい列を追加し、既定値を定義する
- 13. 変更後の既定の選択値の設定
- 14. set.record extjs内の既存の値を更新しません
- 15. DataGridViewComboBoxの既定値を既存のDataGridView列と同じに設定する
- 16. MySQL、既定値が目的の列にない場合
- 17. エンティティの最初の移行で新しいGUID列の既定値を追加
- 18. 既定値を変更するVisual C++ 2010でファイルパスを追加します。
- 19. Elixirに既存の構造体の値を設定していますか?
- 20. Entity Frameworkの移行で必須フィールドの既定値?
- 21. x.Textに既定値を割り当てた後に更新しません
- 22. UINavigationBarの外観設定を既定値に戻します
- 23. C#が既定値
- 24. $ profileのデフォルト値を新しい値に変更できますか?
- 25. NULLの場合にのみテーブルのフィールドにデフォルト値を設定します。
- 26. GWT DatePickerの既定値は
- 27. サードパーティプロセスの既知のメモリアドレスの値を変更する、Java
- 28. 既定値が設定されていますがフィールドが更新されていません
- 29. SQL Serverの既定値がエンティティの既定値として表示されない
- 30. 既存のMemcachedレコードを更新する
「SET SET value = 3 WHERE value = 0」を更新できませんか? – Pelshoff