sql >> Database >  >> RDS >> PostgreSQL

Methode voor het trapsgewijs verwijderen van zachte verwijderingen in ouder-kindrelaties

Strikt genomen is de enige manier om dergelijke waarden te cascaderen, door ON UPDATE CASCADE te gebruiken. Om dat te doen , moet de kolom "is_deleted" deel uitmaken van een unieke beperking.

Dat alleen is niet zo moeilijk. Als company.id uw primaire sleutel is, is het paar kolommen {id, is_deleted} ook uniek. Een unieke beperking op dat paar kolommen zou u in staat stellen om updates trapsgewijs te laten verlopen via een refererende sleutelreferentie.

Maar dat werkt niet in uw geval, omdat u moet toestaan ​​dat verwijzingswaarden verschillend zijn van de waarden waarnaar wordt verwezen.

Dus in jouw geval denk ik dat je drie opties hebt.

  • Triggers
  • Opgeslagen procedures
  • Applicatiecode

In al die gevallen moet u aandacht besteden aan machtigingen (waarschijnlijk het intrekken van verwijderingsmachtigingen) en aan gevallen die uw code kunnen vermijden. De dbms-opdrachtregelinterface en GUI-interface kunnen bijvoorbeeld worden gebruikt om beperkingen in toepassingscode en, afhankelijk van machtigingen, in opgeslagen procedures te omzeilen.




  1. voeg enkele tuples in de tabel in web2py in

  2. GroupBy na orderBy voor ingewikkelde zoekopdracht in Laravel

  3. Specifieke kolommen exporteren van Mysql-tabel naar Excel

  4. Hoe zorg ik ervoor dat MySQL een INDEX gebruikt voor weergavequery's?