Je cherche de la documentation sur le conflit entre un nom

Partons du code suivant, qui fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE OR REPLACE FUNCTION test_sur_insert(nom text) RETURNS integer AS $$
DECLARE
  repid integer;
BEGIN
 
SELECT id INTO repid FROM compte WHERE compte.nom=nom;
 
RETURN repid;
 
END;
$$ LANGUAGE plpgsql;
 
select test_sur_insert('moi');
Si j'oublie de préfixer la colonne nom en compte.nom, j'obtiens un résultat idiot : si le nom de colonne n'est pas préfixé, il est masqué par la variable nom.

Par contre, cela ne marche plus

Ca marche encore si j'essaye de faire la même chose dans la clause INTO :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT compte.id INTO id FROM compte WHERE compte.nom=nom;
C'est la cata par contre si j'essaye de passer une requête INSERT. Il plante sur les préfixes. Si j'essaye de protéger les noms de colonnes avec des guillemets, ca ne marche pas non plus.

Y a-t-il un document qui référence la façon dont ces conflits sont gérés ? Et une solution pour la méthode INSERT ?

Archeboc.