Bonjour à toutes et à tous,
J'ai crée un trigger permettant d'ajouter automatiquement une ligne dans la table authentification
lors de l'ajout d'un nouvel utilisateur.
Cependant, j'ai un message d'erreur lors de l'execution de la requête INSERT INTO users VALUES ...
Néanmoins voici le script PL/pgSQL permettant un ajout dans la table authentification.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| CREATE OR REPLACE FUNCTION ajout_auth() RETURNS trigger AS $ajout_auth$
BEGIN
RAISE NOTICE 'ajout du client en cours ...';
IF (TG_OP = 'INSERT') THEN
INSERT INTO authentification (auth_id, auth_login, auth_passwd, auth_dtecreation, auth_dtelastconnect, auth_actif) VALUES
((SELECT COALESCE (MAX(auth_id),0) + 1 FROM authentification),lower(NEW.user_nom), initcap(NEW.user_prenom), CURRENT_DATE, CURRENT_DATE, true);
RETURN NEW;
END IF;
END;
$ajout_auth$ LANGUAGE plpgsql;
CREATE TRIGGER ajout_auth AFTER INSERT ON users
FOR EACH ROW
EXECUTE PROCEDURE ajout_auth(); |
Sous psql en exécutant la requête suivante :
Code:
INSERT INTO users VALUES ((SELECT COALESCE (MAX(user_id),0) + 1 FROM users), 'DURAND','renaud','1969-04-11','renaud.durand@businessdecision.com','h','9,rue de Condé','','Bordeaux','33000', 1,11,'0556001260');
J'ai le message d'erreur suivant :
Code:
ERREUR: une instruction insert ou update sur la table « users » viole la contrainte de clé
étrangère « fk_users_idauth »
DÉTAIL : La clé (user_idauth)=(11) n'est pas présente dans la table « authentification ».
La valeur 11 (champ idauth dans la table user) correspond à l'id que devrait avoir le nouvel utilisateur
ajouté.
Si je ne mets pas 11, qu'elle valeur dois-je mettre?
Merci d'avance.
Sophonie.
Partager