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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.