SQL Oracle : trigger pour récupérer le current user

SQL Oracle : trigger pour récupérer le current user - SQL/NoSQL - Programmation

Marsh Posté le 31-05-2006 à 11:39:52    

Salut les hommes !
 
J'ai un devoir de BDD et je voudrais écrire un trigger permettant de récupérer l'utilisateur courant pour le mettre dans un champ de ma table. Pour plus de lisibilité, je vous mets la version "toto inside"... La table table_toto comporte une colonne login que je veux alimenter avec le trigger trigger_toto. Je me suis donc dit que je pouvais récupérer la valeur de la variable user, celle qu'on appelle quand on fait un "select user from dual".
Mais puis-je directement écrire ça ou dois appeler une procédure stockée faisant le select en question ? Je vous mets ma code :
 
SQL> CREATE OR REPLACE TRIGGER    
            TRIGGER_TOTO
            BEFORE INSERT ON TABLE_TOTO
            FOR EACH ROW
            BEGIN
            :NEW.LOGIN := USER ;
            END ;
            /
 
Et il n'y aurait pas un peu trop de points virgule ?
Un gros merci d'avance, je vous salue bien bas,
 
Estellanara

Reply

Marsh Posté le 31-05-2006 à 11:39:52   

Reply

Marsh Posté le 31-05-2006 à 11:54:50    

tu devrais faire plutot ta selection dabord:
 
begin
res = select user from dual;
:New.login := res;
end

Reply

Marsh Posté le 02-06-2006 à 08:49:16    

Merci pour le coup de main !

Reply

Marsh Posté le 02-06-2006 à 09:11:47    

c bon t'as réussi?

Reply

Marsh Posté le 02-06-2006 à 15:35:40    

et sans accés à DUAL :
:New.login := SYS_CONTEXT('USERENV','CURRENT_USER');

Reply

Marsh Posté le 06-06-2006 à 09:52:01    

Merci les gars !
En fait, user semble être une variable Oracle. Donc, on peut l'invoquer sans passer par un select ou une variable intermédiaire. En faisant simplement comme j'avais fait au départ.
Le blème, c'est que je n'ai pas d'Oracle pour tester le truc. Je n'ai toujours pas réussi à l'installer chez moi, tellement mon système est vérolé, snif !
Faudra que j'essaye aussi le truc d'orafrance, ça a l'air sympa.  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed