前提
- Supabaseを使いたい
- Supabaseのアカウントを作成済
- 親子関係がハッキリしている
- RDBを使いたい
- 既にテーブルを作成しているが親、子のテーブルにデータは存在しない
やりたい事
- テーブル間の親子関係としてリレーション設定を行い、子が保持する親IDが消された場合に子のレコードも一緒に削除したい
期待値
手順
- 親、子テーブル作成
- 子テーブルにリレーションしたい親のIDを指定
- 動作確認
親、子テーブル作成
※ RLSはオン/オフは任意で変更してください。今回のリレーションには関係ありません。
子テーブルにリレーションしたい親のIDを指定
- 2023-01-01現在は親子関係にあるデータ削除(ON DELETE CASCADE)設定についてはSQLEditorでSQLを叩く必要があります。
実行するクエリ
ALTER TABLE public.ko
ADD CONSTRAINT oid
FOREIGN KEY (oid)
REFERENCES oya(id)
ON DELETE CASCADE;
結果実行結果
上記のようなクエリ簡単作成サイト(外人さんTHUNKS)
参考情報
同様の事を行いたいとsupabaseのエンジニア様が回答されている神記事
https://stackoverflow.com/questions/69251891/delete-associated-records-in-supabase
回答されているエンジニアの方(タイラー様)
https://twitter.com/dshukertjrjp
関連情報
関連キーワード
ON DELETE, CASCADE, PostgreSql, Query, リレーション, 親子関係データ, 削除