IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Sequence casse tete


Sujet :

Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut Sequence casse tete
    Bonjour,

    Sur Oracle 9.2.0.1.0 :
    J'ai un souci pour inserer dans une table, a priori, ca viendrait de la sequence pour la clé primaire.

    Sous le compte "robot" qui a les droits admin :
    Création de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DROP TABLE robot.t_robot_script_exec;
     
    CREATE TABLE robot.t_robot_script_exec
    (	robot_script_exec_id 		number         NOT NULL,
    robot_script_exec_script_id 	number         NOT NULL,
    robot_script_exec_bearer 		varchar2(50),
    	robot_script_exec_apn 		varchar2(100),
    	robot_script_exec_SLA_HC	number,
    	robot_script_exec_SLA_HP	number,
    	robot_script_exec_Trig_HC	number,
    	robot_script_exec_Trig_HP	number
    )
    création de la sequence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DROP SEQUENCE robot.robot_script_exec_id_seq;
     
    CREATE SEQUENCE robot.robot_script_exec_id_seq
    	Start With 1
    	Increment by 1;
    Contraintes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ALTER TABLE robot.T_ROBOT_SCRIPT_EXEC
    	DROP CONSTRAINT PK_T_ROBOT_SCRIPT_EXEC;
     
    ALTER TABLE robot.T_ROBOT_SCRIPT_EXEC
    	ADD CONSTRAINT PK_T_ROBOT_SCRIPT_EXEC  PRIMARY KEY (ROBOT_SCRIPT_EXEC_ID)
    	USING INDEX TABLESPACE ind_xs;
     
    ALTER TABLE robot.T_ROBOT_SCRIPT_EXEC
    	ADD CONSTRAINT FK_T_ROBOT_SCRIPT_EXEC FOREIGN KEY (ROBOT_SCRIPT_EXEC_SCRIPT_ID) REFERENCES T_ROBOT_SCRIPT (ROBOT_SCRIPT_ID);
    Attributions des droits :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Grant Select, Update, Insert on robot.t_robot_script_exec  to ats_probe;


    Sous le compte "ats_probe" qui est celui qui fera l'insertion
    Alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE OR REPLACE SYNONYM t_robot_script_exec FOR robot.t_robot_script_exec;
     
    CREATE OR REPLACE SYNONYM robot_script_exec_id_seq FOR robot.robot_script_exec_id_seq;
    A partir de la, lorsque j'essaye d'inserer une ligne depuis le compte "ats_probe" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO T_ROBOT_SCRIPT_EXEC 
    (ROBOT_SCRIPT_EXEC_ID,ROBOT_SCRIPT_EXEC_SCRIPT_ID,ROBOT_SCRIPT_EXEC_BEARER,ROBOT_SCRIPT_EXEC_APN,ROBOT_SCRIPT_EXEC_SLA_HC, 
    ROBOT_SCRIPT_EXEC_SLA_HP, ROBOT_SCRIPT_EXEC_TRIG_HC, 
    ROBOT_SCRIPT_EXEC_TRIG_HP) VALUES 
    (robot_script_exec_id_seq.nextval,7697,'WIFI','orange.fr',60,30,5,3);
    Je me mange une exception "Table ou vue inexistante" qui cible la sequence.

    Meme erreur lorsque je tente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select robot_script_exec_id_seq.currval from dual;

    Quelqu'un sait-il comment resoudre ca ?

  2. #2
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    donne aussi le droit de Select sur la SEQUENCE à ton user cible...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Grant Select on robot.robot_script_exec_id_seq to ats_probe ;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Exact ! En fait j'ay ai pensé aprés avoir posté le message.
    Malheureusement, ca ne change rien ...

  4. #4
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    le fait est, également qu'un Select CURRVAL ne peut être fait que sur une séquence initialisée dans le contexte...

    c'est à dire essaye D'ABORD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select robot_script_exec_id_seq.NEXTVAL from dual;
    PUIS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select robot_script_exec_id_seq.currval from dual;
    ça donne quoi ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    en fait depuis le compte robot, tout est possible nextval, currval, insert dans une table avec la sequence ...
    Depuis le compte ats_probe nextval et currval renvoi l'erreur "table ou vue inexistante"
    J'ai recréé l'alias sur les deux comptes, j'ai "commité", rien n'y fait, il ne voit pas la sequence depuis le compte ats_probe.

  6. #6
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    et si tu préfixe ta séquence avec le nom du propriétaire ? (Robot)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Bien sur !
    Et ca ne permet toujours pas d'acceder cette fichue sequence depuis le compte ats_probe.

  8. #8
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Par défaut
    Peux tu nous donner le résultats de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    connect ats_probe/pwd@mabase;
     
    select robot_script_exec_id_seq.NEXTVAL from dual;
     
    select robot_script_exec_id_seq.currval from dual;
     
    select count(*) from t_robot_script_exec;
     
    select robot.robot_script_exec_id_seq.NEXTVAL from dual;
     
    select robot.robot_script_exec_id_seq.currval from dual;
     
    selcet count(*) from robot.t_robot_script_exec;

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    On dirai que seuls la connexion et les select sur la table elle-meme fonctionnent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    SQL> select robot_script_exec_id_seq.NEXTVAL from dual;
    select robot_script_exec_id_seq.NEXTVAL from dual
           *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
     
     
    SQL> select robot_script_exec_id_seq.currval from dual;
    select robot_script_exec_id_seq.currval from dual
           *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
     
     
    SQL> select count(*) from t_robot_script_exec;
     
      COUNT(*)
    ----------
             6
     
    SQL> select robot.robot_script_exec_id_seq.NEXTVAL from dual;
    select robot.robot_script_exec_id_seq.NEXTVAL from dual
                 *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
     
     
    SQL> select robot.robot_script_exec_id_seq.currval from dual;
    select robot.robot_script_exec_id_seq.currval from dual
                 *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
     
     
    SQL> select count(*) from robot.t_robot_script_exec;
     
      COUNT(*)
    ----------
             6
    EDIT : Les 6 inserts présents on été faits a la main dans le but de tester la table.

  10. #10
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Par défaut
    tu ne peux accéder à ta séquence avec le synonyme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    robot.robot_script_exec_id_seq
    ou directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    robot_script_exec_id_seq
    via le compte ats_probe
    es tu sur de l'existence de ta séquence ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select owner, sequence_name from all_sequences
    where sequence_name = upper('robot_script_exec_id_seq');
    select owner, sequence_namefrom all_sequences
    where sequence_owner = 'ROBOT';
    et les droits sont ils bien appliqué ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select PRIVILEGE, GRANTEE, GRANTABLE, GRANTOR
     from sys.all_tab_privs
     where table_name = 'ROBOT_SCRIPT_EXEC_ID_SEQ'
     and table_schema='ROBOT'
     order by grantee;

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Merci pour ton aide !! Tes deux dernieres requetes surtout !
    Effectivement il semblerait que la sequence "n'existe pas" sous l'utilisateur ats_probe ...

    Par contre, le champs "owner" n'est pas connu avec SQL + on dirait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> select owner, sequence_name from all_sequences
    	where sequence_name = upper('robot_script_exec_id_seq');
    select owner, sequence_name from all_sequences
           *
    ERREUR à la ligne 1 :
    ORA-00904: "OWNER" : identificateur non valide
    Je l'ai enlevé de la requete pour tester et donc :
    - Avec le compte ROBOT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> select sequence_name from all_sequences
    	where sequence_name = upper('robot_script_exec_id_seq');
     
    SEQUENCE_NAME
    ------------------------------
    ROBOT_SCRIPT_EXEC_ID_SEQ
    Avec le compte ATS_PROBE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aucune ligne sélectionnée

    La deuxieme requete ne retourne rien sur les deux comptes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select PRIVILEGE, GRANTEE, GRANTABLE, GRANTOR
    from sys.all_tab_privs
    where table_name = 'ROBOT_SCRIPT_EXEC_ID_SEQ'
    and table_schema='ROBOT'
    order by grantee;
     
    aucune ligne sélectionnée

    Bon j'arrete la pour aujourd'hui ...

  12. #12
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Par défaut
    Bon j'ai fait un scripts vite fait pour tester les droits
    et tout fonctionne correctement chez moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    SQL>drop USER ats_probe;
    drop USER ats_probe
              *
    ERREUR à la ligne 1 :
    ORA-01918: utilisateur 'ATS_PROBE' n'existe pas
     
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>CREATE USER ats_probe IDENTIFIED BY ats_probe;
     
    Utilisateur créé.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>GRANT CONNECT TO ats_probe;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>GRANT RESOURCE TO ats_probe;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>drop USER ROBOT;
    drop USER ROBOT
              *
    ERREUR à la ligne 1 :
    ORA-01918: utilisateur 'ROBOT' n'existe pas
     
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>CREATE USER ROBOT  IDENTIFIED BY ROBOT;
     
    Utilisateur créé.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>GRANT CONNECT TO ROBOT;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>GRANT RESOURCE TO ROBOT;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    Ecoulé : 00 :00 :00.00
    SQL>connect robot/robot@mabase
    Connecté.
    SQL>DROP TABLE robot.t_robot_script_exec;
    DROP TABLE robot.t_robot_script_exec
                     *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
     
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>CREATE TABLE robot.t_robot_script_exec
      2  ( robot_script_exec_id   number         NOT NULL,
      3  robot_script_exec_script_id  number         NOT NULL,
      4  robot_script_exec_bearer   varchar2(50),
      5   robot_script_exec_apn   varchar2(100),
      6   robot_script_exec_SLA_HC number,
      7   robot_script_exec_SLA_HP number,
      8   robot_script_exec_Trig_HC number,
      9   robot_script_exec_Trig_HP number
     10  );
     
    Table créée.
     
    Ecoulé : 00 :00 :00.02
    SQL>
    SQL>
    SQL>DROP SEQUENCE robot.robot_script_exec_id_seq;
    DROP SEQUENCE robot.robot_script_exec_id_seq
                        *
    ERREUR à la ligne 1 :
    ORA-02289: la séquence n'existe pas
     
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>CREATE SEQUENCE robot.robot_script_exec_id_seq
      2   Start With 1
      3   Increment by 1;
     
    Séquence créée.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>Grant Select, Update, Insert on robot.t_robot_script_exec  to ats_probe;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>Grant Select on robot.robot_script_exec_id_seq to ats_probe ;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    Ecoulé : 00 :00 :00.01
    SQL>connect ats_probe/ats_probe@mabase
    Connecté.
    SQL>CREATE OR REPLACE SYNONYM t_robot_script_exec FOR robot.t_robot_script_exec;
     
    Synonyme créé.
     
    Ecoulé : 00 :00 :00.01
    SQL>
    SQL>CREATE OR REPLACE SYNONYM robot_script_exec_id_seq FOR robot.robot_script_exec_id_seq;
     
    Synonyme créé.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>
    SQL>select * from t_robot_script_exec;
     
    aucune ligne sélectionnée
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>
    SQL>select robot_script_exec_id_seq.nextval from dual;
       NEXTVAL
    ----------
             1
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>select robot_script_exec_id_seq.nextval from dual;
       NEXTVAL
    ----------
             2
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>select robot_script_exec_id_seq.currval from dual;
       CURRVAL
    ----------
             2
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>INSERT INTO T_ROBOT_SCRIPT_EXEC
      2  (ROBOT_SCRIPT_EXEC_ID,ROBOT_SCRIPT_EXEC_SCRIPT_ID,ROBOT_SCRIPT_EXEC_BEARER,ROBOT_SCRIPT_EXEC_APN,ROBOT_SCRIPT_EXEC_SLA_HC,
      3  ROBOT_SCRIPT_EXEC_SLA_HP, ROBOT_SCRIPT_EXEC_TRIG_HC,
      4  ROBOT_SCRIPT_EXEC_TRIG_HP) VALUES
      5  (robot_script_exec_id_seq.nextval,7697,'WIFI','orange.fr',60,30,5,3);
     
    1 ligne créée.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>commit;
     
    Validation effectuée.
     
    Ecoulé : 00 :00 :00.00
    SQL>
    SQL>select robot_script_exec_id_seq.currval from dual;
       CURRVAL
    ----------
             3
     
    Ecoulé : 00 :00 :00.00
    SQL>select * from t_robot_script_exec;
    ROBOT_SCRIPT_EXEC_ID ROBOT_SCRIPT_EXEC_SCRIPT_ID ROBOT_SCRIPT_EXEC_BEARER
    -------------------- --------------------------- --------------------------------------------------
    ROBOT_SCRIPT_EXEC_APN
    ----------------------------------------------------------------------------------------------------
    ROBOT_SCRIPT_EXEC_SLA_HC ROBOT_SCRIPT_EXEC_SLA_HP ROBOT_SCRIPT_EXEC_TRIG_HC
    ------------------------ ------------------------ -------------------------
    ROBOT_SCRIPT_EXEC_TRIG_HP
    -------------------------
                       3                        7697 WIFI
    orange.fr
                          60                       30                         5
                            3
     
     
    Ecoulé : 00 :00 :00.00
    SQL>spool off
    Si un pb persiste recommence tout

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Je ne comprend pas mais j'ai repris ta procédure du début et ca fonctionne \o/ !!
    il n'y a que la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT RESOURCE TO ats_probe;
    que je n'avais pas utilisée ...

    Quoi qu'il en soit, merci Steven

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Bloqué]Macro autoexec casse tete
    Par torNAdE dans le forum Access
    Réponses: 24
    Dernier message: 12/07/2006, 15h09
  2. Tube nommé: un casse tête
    Par yashiro dans le forum Linux
    Réponses: 2
    Dernier message: 28/06/2006, 09h11
  3. Requete Casse tete... Help..
    Par Jerome218 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/01/2006, 05h57
  4. casse tete de requete
    Par moutey dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/12/2004, 14h00
  5. [casse-tete (pour moi)] recuperer la largeur d'un <div>
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 05/11/2004, 07h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo