Bonjour,
Je suis sous Oracle, et j'ai un petit problème de "random".
Pour faire simple, voici mes tables de travail :
Code :
- CREATE TABLE DEPARTEMENT
- (
- "ID" NUMBER(10,0) NOT NULL ENABLE,
- "NAME" VARCHAR2(100 CHAR) NOT NULL ENABLE
- )
|
Code :
- CREATE TABLE EMPLOYE
- (
- "ID" NUMBER(10,0) NOT NULL ENABLE,
- "NAME" VARCHAR2(100 CHAR) NOT NULL ENABLE,
- "DEPT" NUMBER(10,0)
- )
|
"DEPT" est une clé étrangère vers la table "DEPARTEMENT".
Je voudrais mettre à jour, de manière aléatoire, ce champ pour tous les employés.
Pour tirer une ligne au hasard de la table "DEPARTEMENT", j'utilise :
Code :
- SELECT id
- FROM
- ( SELECT id FROM DEPARTEMENT ORDER BY dbms_random.value
- )
- WHERE rownum = 1;
|
Ce qui me renvoie bien un id différent à chaque exécution.
Pour la mise à jour de ma clé étrangère, j'utilise :
Code :
- UPDATE EMPLOYEE
- SET DEPT =
- (SELECT did
- FROM
- (SELECT d.id AS did
- FROM DEPARTEMENT d
- ORDER BY dbms_random.value
- )
- WHERE rownum = 1
- );
|
Malheureusement, toutes les lignes sont mises à jour avec la même clé, et non pas de manière aléatoire. Apparemment la génération de la clé aléatoire n'est faite qu'une seule fois alors que je voudrais qu'elle le soit pour chaque employé.
Comment faire alors??
Merci d'avance pour vos réponses