|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Membre actif
![]() Inscription : juin 2003 Messages : 209 ![]() |
Salut,
Je souhaite créer une vue sur deux tables puis pouvoir effectuer des update, insert, delete et select sur cette vue. J'ai créé ma vue: Code :
insert: Code :
Code :
Code :
Je ne comprends pas... je tourne en rond en faisant plein de tests mais sans succès! Qqun aurait une idée? |
||||||||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : octobre 2003 Messages : 266 ![]() |
Salut,
Juste une idée comme ça, du fait de l'héritage (ou d'une contrainte que je connais pas...), ne dois-tu pas d'abord faire un delete sur la table1 puis sur la table2 ??? @+ |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : juin 2003 Messages : 209 ![]() |
Salut Krapulax,
Cela fait plaisir de te revoir... J'y ai pensé.... j'ai testé cela sans les contraintes d'intégrités. Si j'inverse l'ordre des deletes dans le do instead. Il me fait tjs le premier mais jamais le deuxième! Pfff... je ne sais plus quoi faire... A+ |
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Inscription : juin 2003 Messages : 209 ![]() |
Est-ce un bug de Postgres?!? Car selon l'aide, on peut écrire pls requêtes dans la zone d'action:
Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : octobre 2003 Messages : 266 ![]() |
J'ai regardé un peu à gauche et à droite.... j'ai quelques pistes.
Quand tu parles d'héritage, est-ce vraiment au sens objet du terme (CREATE TABLE.... INHERITS table), ou est-ce plutôt une clé ou une contrainte ? Si j'ai bien compris la doc (CREATE TABLE chapitre INHERITS), il gère l'héritage comme une contrainte. Si c'est vrai, regardes du côté des ON DELETE CASCADE cf newsgroup : http://minilien.com/?wES1i0Stre |
|
|
00
|
|
|
#6 | ||
|
Membre actif
![]() Inscription : juin 2003 Messages : 209 ![]() |
Cette fois-ci Krapulax, c'est à moi de
car j'ai mal interpréter l'aide de postgres: il disait:Code :
[...]Il y a un problème si vous essayez d'utiliser les règles conditionnelles pour les mises à jour de vues; une règle INSTEAD doit être inconditionnelle pour chaque action que vous voulez permettre sur la vue. Si la règle est conditionnelle, ou n'est pas INSTEAD, le système rejettera encore les tentatives d'exécution de mise à jour, car il croit qu'il peut pour finir tenter d'exécuter l'action sur la TABLE fictive dans certains cas. Si vous voulez manipuler tous les cas possibles de règles conditionnelles, vous pouvez; ajoutez juste une règle DO INSTEAD NOTHING pour vous assurer que le système comprenne qu'il ne sera jamais appelé sur des mises à jour de tables fictives. Ensuite, faites une règle conditionnelle non-INSTEAD.[...] Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre actif
![]() Inscription : juin 2003 Messages : 209 ![]() |
Pffff.... non non non... cela ne fonctionne tjs pas! Je me suis emballé! J'ai bien cru que c'était bon, mais tjs le même problème!
Pour répondre à ta précédente question, Krapulax, je n'utilise pas le vrai inherits de postgres, c'est un héritage dans lequel, j'utilise juste la clé primaire du parent. Car cela me permets d'avoir plus types d'enfant pour un parent donné. Ce que ne permet pas de faire le inhérits. Mais en fait, pour l'instant je fais des tests sans contraintes d'intégrité! Donc de ce côté là, je ne devrais pas avoir de problème. Encore une autre idée? |
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Inscription : octobre 2003 Messages : 266 ![]() |
Si tu utilises comme contrainte (comme je pensais), regardes bien le post que je t'avais mis en lien : la personne avait l'air d'être dans le même cas que toi.
|
|
|
00
|
|
|
#9 | ||
|
Membre actif
![]() Inscription : juin 2003 Messages : 209 ![]() |
Hello,
Oui j'ai lu ton lien... le truc c'est que eux ils parlent bcp de problème de référence entre les tables. Pour ma part, je n'ai pas de contrainte d'intégrité... donc normalement pas de problème! Leur solution c'est de faire une fonction stockée... Pfff... je trouve cette solution relativement lourde. J'ai encore fait des tests, tu peux sans autre copier l'exemple et l'exécuter: Code :
Le truc, c'est cela ne fonctionne pas. Si la doc de postgres dit que c'est possible de faire pls action par règle, je ne vois pas pourquoi cela n'est pas possible. C'est donc un bug!?!? Désolé d'être un peu têtu, mais j'aime bien chercher de belle solution... car par expérience, je sais que si je fais une solution qui n'est pas propre (fonction stockée), je vais avoir des problèmes plus loin. Merci de ton aide... Si tu as encore une idée, c'est volontier. P.S: Peux-tu juste tester le bout de code et me dire si tu as la même chose... Merci d'avance. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com