Dans une application existante, j'ai une table qui n'a pas de clé primaire, qui contient (rarement) des lignes dupliquées. Pour l'intégration avec un autre système, j'ai besoin d'ajouter une colonne à la table qui rend ces lignes dupliquées uniques. Le tableau est essentiellement:Postgres ajoute seq # pour distinguer les lignes uniques dans la base de données
+------+---------+--------+ | txn# | detail# | amount | +------+---------+--------+
je pouvais utiliser un #SEQ incrémenter pour chaque ligne existante, cependant, les changements d'application sera de prendre l'actuel « presque clé » (essentiellement transaction # détail #), et l'incrément le numéro de séquence pour cette combinaison (ainsi, par exemple, je vais avoir deux lignes pour txn # 1, détail # 1, et avoir seq # 1 pour le premier et seq # 2 pour le second, et si txn # 513, détail # 44 a 3 lignes dupliquées, celles-ci auraient la séquence # 1,2,3 de façon appropriée, ce qui serait idéal (du point de vue du support), si les modifications de données avant et après l'application étaient également présentées. créer cette colonne, ou dois-je faire défiler les lignes manuellement, en réinitialisant la séquence utilisée chaque fois que le # txn # ou le détail # change?
modifié pour ajouter: l'application est déployée sur Postgresql 7.4 & 8.1, et la solution doit fonctionner pour les deux versions.
Merci, la chose ctid était la partie manquante du puzzle pour moi! –