外部キーのON DELETE制約にいくつかのロジックを実行できるようにします。ロジックに応じて、私はCASCADEまたはRESTRICTのいずれかにします。ON DELETE外部キー参照の条件付きロジック
マイテーブル:私の(非常に基本的な)で
CREATE TABLE users (
user_id uuid DEFAULT uuid_generate_v4() PRIMARY KEY
);
CREATE TABLE teams (
team_id uuid DEFAULT uuid_generate_v4() PRIMARY KEY
);
CREATE TABLE documents (
document_id uuid DEFAULT uuid_generate_v4() PRIMARY KEY
user_id uuid REFERENCES users ON DELETE /*do logic here*/,
team_id uuid REFERENCES teams ON DELETE /*do logic here*/,
content text
);
テーブルdocument
はuser
および/またはteam
が所有することができます。
についてdocuments
については、誰かがドキュメントのユーザーを削除し、そのドキュメントのteam_id
がNULLの場合は、削除をドキュメントにCASCADE(またはその逆、user_idおよびteam_id)します。
他の人がドキュメントのユーザーを削除し、そのドキュメントのteam_id
がIS NOT NULLの場合は、ユーザーの削除を制限します(user_idとteam_idの場合はその逆)。
ドキュメントでこれを達成する方法はありませんでした。データベースではなくサーバーコードでこのロジックを実行する必要がありますか?私は、データの整合性の余分な層が欲しいです。