PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да напиша правило за изтриване на изглед?

Това, което виждате при проблема с правилото, е, че системата от правила не обработва данните атомарно. Първото изтриване се изпълнява независимо от реда на двата оператора в правилото DO INSTEAD. Вторият оператор никога не се изпълнява, тъй като редът, към който се отнася OLD.id, е премахнат от изгледа. Бихте могли да използвате LEFT JOIN, но това няма да ви помогне поради примерния дизайн на таблицата (може да работи на действителната ви схема на база данни).

Фундаменталният проблем, както го виждам, е, че третирате системата от правила като задействаща.

Най-добрият ви вариант е да използвате външни ключове и ON DELETE CASCADE вместо правила. С тях вашата примерна схема също ще работи:трябва само да изтриете за родителската таблица, за да се отървете от всички деца.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да попреча на CakePHP да избягва данни при записване?

  2. nightwatch персонализирана команда обратно извикване

  3. Как да съпоставим елементи в масив от съставен тип?

  4. Как да разрешите двусмислено съвпадение при верижно генериране на Jooq класове

  5. клониране на йерархични данни