Triggers et clefs primaires
Bonjour,
J'ai un trigger (AFTER FOR EACH ROW) sur une table qui à chaque fois
qu'il y a un enregistrement sur cette même table, exécute une fonction
pgplsql qui éxécute elle-même une fonction PL/sh qui exécute un script
PHP.
Dans ce script PHP, je créer 10 enregistrements dans une autre tables où
il y a un champ qui fait référence à la table sur laquelle il y a le
trigger.
Exemple d'application:
INSERT INTO table1 (champ2, champ3) VALUES ('salut', 'samuel');
(la table1 as un champ1 (alias id) qui est un serial en clef primaire)
-> La fonction pgplsql (appelée par le trigger) récupère l'ID de
l'enregistrement (NEW.id), le donne à la fonction pl/sh qui le donne au
script PHP.
J'enregistre des données dans la table2, avec un champ qui fait
référence à l'id de la table1. Des données avec comme id de table1, l'ID
qui vient juste d'être enregistré...
ERREUR de clef étrangère... :(
Note: Les deux tables sont dans deux schémas différents, avec deux
utilisateurs différents. Cependant, aucun problème de droit a priori
(GRANT USAGE ON SCHEMA... GRANT REFERENCES ON TABLES...)
Avez-vous une idée ?
Merci à vous,
Cordialement, Samuel.
Samuel ROZE a écrit :
[...]
J'ai un trigger (AFTER FOR EACH ROW) sur une table qui à chaque fois
qu'il y a un enregistrement sur cette même table, exécute une fonction
pgplsql qui éxécute elle-même une fonction PL/sh qui exécute un script
PHP.Dans ce script PHP, je créer 10 enregistrements dans une autre tables où
il y a un champ qui fait référence à la table sur laquelle il y a le
trigger.Exemple d'application:
INSERT INTO table1 (champ2, champ3) VALUES ('salut', 'samuel');
(la table1 as un champ1 (alias id) qui est un serial en clef primaire)-> La fonction pgplsql (appelée par le trigger) récupère l'ID de
l'enregistrement (NEW.id), le donne à la fonction pl/sh qui le donne au
script PHP.J'enregistre des données dans la table2, avec un champ qui fait
référence à l'id de la table1. Des données avec comme id de table1, l'ID
qui vient juste d'être enregistré...ERREUR de clef étrangère... :(
The row on table1 is inserted at the end of the trigger.
Note: Les deux tables sont dans deux schémas différents, avec deux
utilisateurs différents. Cependant, aucun problème de droit a priori
(GRANT USAGE ON SCHEMA... GRANT REFERENCES ON TABLES...)Avez-vous une idée ?
Merci à vous,
Cordialement, Samuel.
This is an english channel. If you want a french one, try
pgsql-fr-generale (http://archives.postgresql.org/pgsql-fr-generale/).
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
Le mardi 26 août 2008 à 11:01 +0200, Guillaume Lelarge a écrit :
Samuel ROZE a écrit :
[...]
J'ai un trigger (AFTER FOR EACH ROW) sur une table qui à chaque fois
qu'il y a un enregistrement sur cette même table, exécute une fonction
pgplsql qui éxécute elle-même une fonction PL/sh qui exécute un script
PHP.Dans ce script PHP, je créer 10 enregistrements dans une autre tables où
il y a un champ qui fait référence à la table sur laquelle il y a le
trigger.Exemple d'application:
INSERT INTO table1 (champ2, champ3) VALUES ('salut', 'samuel');
(la table1 as un champ1 (alias id) qui est un serial en clef primaire)-> La fonction pgplsql (appelée par le trigger) récupère l'ID de
l'enregistrement (NEW.id), le donne à la fonction pl/sh qui le donne au
script PHP.J'enregistre des données dans la table2, avec un champ qui fait
référence à l'id de la table1. Des données avec comme id de table1, l'ID
qui vient juste d'être enregistré...ERREUR de clef étrangère... :(
The row on table1 is inserted at the end of the trigger.
Yes but... my trigger is a AFTER INSERT trigger... So, data might be
insered... no?
Note: Les deux tables sont dans deux schémas différents, avec deux
utilisateurs différents. Cependant, aucun problème de droit a priori
(GRANT USAGE ON SCHEMA... GRANT REFERENCES ON TABLES...)Avez-vous une idée ?
Merci à vous,
Cordialement, Samuel.This is an english channel. If you want a french one, try
pgsql-fr-generale (http://archives.postgresql.org/pgsql-fr-generale/).
Okay :)