Re : le rowid n'est plus unique ?
Posted in 1996
Translated from English by DrWatson — View original
Ron a écrit : > > Je crois me souvenir avoir vu quelque chose dans ce bb indiquant que le rowid n'est plus > nécessairement unique au sein d'une table en v7. Est-ce exact ? Plus d'une fois, > en codant avec ESQL, j'ai écrit un select singleton dont je savais qu'il renverrait > plusieurs lignes, alors j'ai simplement ajouté une clause where pour éviter d'ouvrir un curseur : > > select col from tab where rowid = > (select max(rowid) from tab where key = "somevalue") Eh bien, n'étant pas puriste, j'envisagerais un curseur. Si vous fragmentez une table pour le pdq, le rowid n'est pas unique. IMHO, si vous devez écrire du code, écrivez-le de manière à ce qu'il soit maintenable. Le rowid n'est plus une méthode *garantie* pour sélectionner une ligne unique. Maintenant, pour ce que ça vaut, voici un autre conseil de votre oncle mike : Utilisez un curseur et faites en sorte que l'instruction select comporte un order by afin que votre première ligne soit celle que vous voulez. Déclarez le curseur. Ouvrez le curseur. Récupérez la ligne (fetch). Fermez le curseur. Poursuivez votre programme ou libérez le curseur. Si cette instruction select est utilisée plusieurs fois, il est préférable d'utiliser un curseur. Si cette instruction est utilisée dans une seule partie du programme et de façon peu fréquente, utilisez un curseur puisque la surcharge est minime. -Mike