#1 Tue 13 August 2019 16:27
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
Supprimer depuis une VUE sql
Bonjour,
Je m'appuie sur les travaux de Florent Vanhoutte (geo.compiegnois.fr) pour mettre en place le standard RAEPA au sein de la collectivité ou je travail. Travaillant avec des vues j'ai adapté le script extension qui définit les fonctions pour l'ajout, la modification et la suppression directement depuis les "vues" sql.
J'ai donc un Trigger INSTEAD OF qui pour chaque ligne appel une fonction, qui elle définit les règles à appliquer.
Cependant la partie Suppression est en cours de développement.
D'après ce que je lis sur internet pour réaliser un trigger INSTEAD OF DELETE il faut une table intermédiaire dans laquelle on stocke la clé primaire ?
Est-ce-que quelqu'un aurait un exemple de fonction qui intègre une règle quant aux suppressions ?
Est ce que je peux rédiger ça de la sorte :
Code:
ELSIF (TG_OP='DELETE') THEN DELETE FROM schema.table_annexe WHERE schema.tableprincipale.idpk = idpk
Hors ligne
#2 Wed 14 August 2019 13:49
- Ben22
- Participant actif
- Lieu: 33
- Date d'inscription: 11 May 2016
- Messages: 96
Re: Supprimer depuis une VUE sql
Votre clé primaire est-elle appelée sur votre vue ?
Si oui :
Code:
... ELSIF (TG_OP='DELETE') THEN -- suppression sur la table annexe DELETE FROM schema.table_annexe as t1 WHERE t1.idpk = OLD.idpk; /* OLD est ici la valeur d'idpk de l'entité supprimée si trigger en "EACH ROW"*/ RETURN OLD; END IF; ...
En ligne
#3 Wed 14 August 2019 14:34
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
Re: Supprimer depuis une VUE sql
Bonjour
Oui la clé primaire est appelée par la vue.
Mhh c'est exactement comme ca que je l'ai écrit (enfin j'avais mis un RETURN NEW) mais j'ai toujours une erreur "entrée manquante de la clause FROM pour la table raepa_canal" -_-
Hors ligne
#4 Wed 14 August 2019 14:40
- Ben22
- Participant actif
- Lieu: 33
- Date d'inscription: 11 May 2016
- Messages: 96
Re: Supprimer depuis une VUE sql
Pouvez-vous mettre le bout de fonction qui pose problème ?
En ligne