差分

Tep3-onk-2

671 バイト追加, 2023年6月27日 (火) 09:43
あとから外部キー制約を追加する手順
[[category:memo|{{PAGENAME}}]]
{{Font color}}
== tep5 準備 ==
プロジェクトディレクトリ作成 移動 [[rails前バージョン確認|バージョン確認]]
% psql --username=jq tep5_development < ../202212270953_data_only.sql
=== カラム追加 boolean ===
% rails generate migration add_payment_to_descriptions payment:boolean
add_column :descriptions, :payment, :boolean, default: false
$ rails db:migrate
=== あとから外部キー制約を追加する手順 ===
hoge_idを削除する
ALTER TABLE journals DROP COLUMN hoge_id;
 
=== エラー ===
例えば待避したhoge_idを戻すとき次のようなエラーがでる
<nowiki>=# UPDATE journals SET schedule_id = hoge_id;
ERROR: insert or update on table "journals" violates foreign key constraint "fk_rails_9d4d4268db"
DETAIL: Key (schedule_id)=(970) is not present in table "schedules".</nowiki>
journalsテーブルのschedule_idがschedulesテーブルにないのでそれを拾い出して削除する
<nowiki>=# delete from journals where hoge_id in (
SELECT id FROM schedules
EXCEPT
SELECT hoge_id FROM journals
UNION ALL
SELECT hoge_id FROM journals
EXCEPT
SELECT id FROM schedules);</nowiki>
== gemアップデート ==