sql >> データベース >  >> RDS >> PostgreSQL

親子関係でソフト削除をカスケードする方法

    厳密に言えば、そのような値をカスケードする唯一の方法は、ONUPDATECASCADEを使用することです。 それを行うには 、列「is_deleted」は一意性制約の一部である必要があります。

    それだけでもそれほど難しいことではありません。 company.idが主キーの場合、列のペア{id、is_deleted}も一意になります。その列のペアに対する一意の制約により、外部キー参照を介して更新をカスケードできます。

    しかし、それはあなたのでは機能しません 参照する値を異なる許可する必要があるためです。 参照値から。

    したがって、あなたの場合、3つの選択肢があると思います。

    • トリガー
    • ストアドプロシージャ
    • アプリケーションコード

    これらすべての場合において、アクセス許可(おそらく削除アクセス許可の取り消し)とコードを回避できる場合に注意を払う必要があります。たとえば、dbmsコマンドラインインターフェイスとGUIインターフェイスを使用して、アプリケーションコードや、権限に応じてストアドプロシージャの制約を回避できます。




    1. SQLServerデータベースをあるサーバーから別のサーバーに移動するためのヒント-RajanSinghによるSQLチュートリアル

    2. mysqlでは、showdatabases。コマンドは私のデータベースのすべてをリストしません

    3. SQL Serverのインラインテーブル値関数(ITVF)の概要

    4. サーブレット経由でmysqlに接続できません