Programmation serveur [PGSQL/C] - SQL/NoSQL - Programmation
Marsh Posté le 25-03-2005 à 13:28:43
bon, d'après ce que tu disais, le NEW est de type RECORD. je te conseillerais bien un truc genre void* mais ça risque de faire désordre
sinon, pourquoi tu ne fais pas tes vérifications dans un trigger ?
Marsh Posté le 25-03-2005 à 13:39:33
Parceque je bosse sur des vues et que les triggers sur les vues ça ne passe pas
De mon coté j'avance: la fonction C je la déclare au format V1 (paramètres PG_FUNCTION_ARGS) pour avoir la paix (après on verra pour récupérer ce qu'il faut à grands coups de ciseaux). Coté SQL je déclare la fonction du type "CREATE FONCTION mafonction(mavue) ..." (mavue étant le nom de la vue dont la règle appelle ma fonction).
Donc ça compile, ça s'intalle, mais quand je fais un INSERT dans ma vue il me crache
|
Marsh Posté le 25-03-2005 à 13:49:41
Moktar1er a écrit : Parceque je bosse sur des vues et que les triggers sur les vues ça ne passe pas |
ah oui merde, faudrait que je lise les topics en entier moi
Moktar1er a écrit :
|
ta RULE est correcte, t'as bien fait un truc genre
|
?
Marsh Posté le 25-03-2005 à 14:03:20
j'ai précisement fait:
|
Marsh Posté le 25-03-2005 à 14:13:26
bon, pour déconner comme ça j'avais déclaré
|
et il me répond
|
Comme quoi il attend bien un paramètre de type myView pour passer NEW...
(notez au passage le magnifique travail de conversion anglais->français des messages d'erreur)
Marsh Posté le 25-03-2005 à 14:32:11
ERREUR: Impossible de gérer une référence sur une ligne entière |
Ca veut dire quoi d'abord ça? Qu'il ne sait pas passer un tuple en paramètres? C'est même pas clair leurs erreurs
Marsh Posté le 25-03-2005 à 17:42:33
Moktar1er a écrit :
|
ben ça me parait clair
effectivement on dirait qu'il a du mal avec le NEW en paramètre.
et ta vue ? je suppose qu'elle est constituée d'un SELECT. donc tu peux éventuellement poser un trigger sur la table d'origine (si toutefois c'est une table unique et pas une UNION/Jointure, sinon bonjour la galère )
Marsh Posté le 29-03-2005 à 12:37:37
Marsh Posté le 29-03-2005 à 16:44:36
bon, manifestement, vu qu'a priori il a l'air de se moquer complètement du type que je lui passe en paramètre lors de la déclaration de la fonction en SQL, je suppute que le problème vienne du passage de NEW...
quelqu'un a t'il une idée sur comment passer une ligne en paramètre? (je sens déjà venir les vannes sur ligne->coke->paille)
Marsh Posté le 05-04-2005 à 17:38:25
alors les gens? hein? bah quoi? je suis le seul au monde à me poser ces questions là???
plus simplement:
comment je fais pour passer en paramètre, au moment de l'appel, une ligne (genre le resultat d'un select)?
Marsh Posté le 24-03-2005 à 11:37:06
Bon, je crée un topic car les questions commencent à se cumuler...
Voilà celle du moment:
J'ai une VIEW, sur laquelle je déclare une RULE.
Dans cette dernière, j'aimerai appeller une fonction C, en lui passant le NEW en paramètre afin de faire 2,3 vérifications. Comment je le déclare ce paramètre? (coté C et coté SQL lors du CREATE FUNCTION)