sql >> Databáze >  >> RDS >> PostgreSQL

Jak napsat pravidlo odstranění na pohledu?

U problému s pravidly vidíte, že systém pravidel nezpracovává data atomicky. První odstranění se provede bez ohledu na pořadí dvou příkazů v pravidle DO INSTEAD. Druhý příkaz se nikdy neprovede, protože řádek, na který odkazuje OLD.id, byl odebrán ze zobrazení. Můžete použít LEFT JOIN, ale to vám nepomůže kvůli vzorovému návrhu tabulky (může fungovat na vašem skutečném schématu databáze).

Zásadní problém je podle mého názoru v tom, že se systémem pravidel zacházíte tak, jako by byl spouštěčem.

Nejlepší možností je použít cizí klíče a ON DELETE CASCADE místo pravidel. S nimi by fungovalo i vaše vzorové schéma:Chcete-li se zbavit všech potomků, stačí pouze odstranit nadřazenou tabulku.



  1. Proč se chování Mysql Group By a Oracle Group podle chování liší

  2. Jak napsat funkci mysql s názvem dynamické tabulky?

  3. Oracle Style Joins v SQL Server

  4. kde rownum=1 dotaz zabírá čas v Oracle