Bonjour
j'ai des lignes qui sont insérées dans une table T1, je voudrais faire un select * from T1 qui me renvois les lignes ordonnées dans leur ordre d'insertion.
Version imprimable
Bonjour
j'ai des lignes qui sont insérées dans une table T1, je voudrais faire un select * from T1 qui me renvois les lignes ordonnées dans leur ordre d'insertion.
Oracle ne peut pas le garantir.
Faut insérer toi même un ordre (systimestamp par exemple)
merci pour ta réponse rapide;
mais mon problème c'est que j'ai déja une table qui a des milliers d'enregistrement et pour des enregistrements précis je veux l'enregistrement avant et l'enregistrement aprés, sachant qu'il n'y a rien dans la table qui me permet de faire ça, ni séquence ni le temps d'insertion, rien. et c'est très important pour moi.
merci
As-tu une primary key dans ta table ?
Si oui, tu insères tes lignes dans une nouvelle table en les triant...
j'ai une table T1(nom,prenom) qui a 7800 enregistrements, il n'y a pas de primary key, et pour un enrtegistrement je veux savoir l'enregistrement avant et aprés. Je ne sais pas comment faire; aidez moi mes amis.
Il n'y a pas de solutions.
Même en utilisant le ROWID, c'est pas garanti.
Ne peux-tu pas créer une nouvelle colonne dans cette table en guise de clé primaire ?
si tu as conservé tous tes fichiers archivelogs, il y a peut-être une possibilité avec LogMiner de reconstituer l'ordre d'insertion. Bonne chance :roll:
en premier lieu je voudrais répondre à davy.g; merci d'avoir interesser à ma question, mais si je crée une clé primaire, comment cette clé va ètre ordonnée dans l'ordre d'insertion? c'est pas possible avec une clé primaire ni avec une séquence car ils doivent ètre ordonné dans l'ordre d'insertion.
en deuxième lieu je voudrais répondre à laurentschneider: cette solution n'est pas possible car j'ai 521 enregistrements dont je veux savoir l'enregistrement avant et l'enregistrement aprés.
as-tu lu la doc que je t'ai référencée?Citation:
Envoyé par elharet
oui j'ai vu la doc, merci mais le problème c'est que ma base est en noarchivelog.
dans ce cas c'est cuit! oracle n'insére pas les lignes dans un ordre précis. cela dépend de la structure physique des données, index, blocks, espace, fragementation, chaining, pctfree, pctused, iot, cluster, parallelism, undo, etc, etc, etc...
Si tu as de la chance, une version récente d'Oracle, un immense UNDO tablespace tu peux essayer :
mais attention, si tu n'as pas activé rowdependencies au niveau de la table, la granularité sera le bloc oracle et non la ligne.Code:
1
2 select * from t order by scn_to_timestamp(ora_rowscn);
Je le pense aussi :|Citation:
Envoyé par McM