[Oracle] numéro de ligne

numéro de ligne [Oracle] - Programmation

Marsh Posté le 19-07-2002 à 08:57:55    

Salut
 
Quelle commande utiliser pour attribuer comme valeur par défaut d'une colonne le numéro de ligne ?

Reply

Marsh Posté le 19-07-2002 à 08:57:55   

Reply

Marsh Posté le 19-07-2002 à 09:30:53    

Sous Oracle, chaque ligne possède un identifiant unique, qui s'appelle ROWID (c'est un alphanumérique).
 
Si tu fais : select ROWID from Matable
tu obtiens la liste des identifiants de chaque ligne.
 
Je pense que tu peux utiliser ça pour insérer le ROWID dans une colonne. Maintenant si tu veux que cela soit effectué automatiquement à chaque insertion de ligne, je pense que tu devrais mettre en place un trigger.

Reply

Marsh Posté le 19-07-2002 à 09:52:27    

Merci ... mais pas très pratique
 
J'ai bien envie d'utiliser les index
 
Quelques questions
- Si jamais j'insère des lignes en fin de table, est-ce que les  index du début de table vont changer ?
- Oracle crée par défaut des index sur les colonnes clés, mais j'arrive pas à les utiliser ...

Reply

Marsh Posté le 19-07-2002 à 10:06:22    

up...

Reply

Marsh Posté le 19-07-2002 à 13:57:31    

Paxman_fr a écrit a écrit :

Merci ... mais pas très pratique
 
J'ai bien envie d'utiliser les index
 
Quelques questions
- Si jamais j'insère des lignes en fin de table, est-ce que les  index du début de table vont changer ?
- Oracle crée par défaut des index sur les colonnes clés, mais j'arrive pas à les utiliser ...




 
Je crains que tu n'aies quelques idées fausses à propos des index sous Oracle...
Un index n'a aucun lien avec ton problème...


Message édité par irulan le 19-07-2002 à 14:00:14
Reply

Marsh Posté le 19-07-2002 à 16:33:03    

Une solution ...
 
Soit table T(chp_compteur, chp1,chp2,...)
 
Tu créés une SEQUENCE (objet Oracle) pour chaque table :  
 
CREATE SEQUENCE ma_sequence START WITH 0
 
 
et lors de l'insert tu initialises :
Insert into T (chp_compteur, chp1,chp2,...) values  
(ma_sequence.nextval,"x",'y", ...)  
 
select ma_sequence.currval from dual; donne 1 après l'insert
 
 

Reply

Sujets relatifs:

Leave a Replay

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