PL/SQL de mise à Jour qui incrémente une variable
J'ai trouvé l'approche suivante sur http://haacked.com/archive/2004/02/28/sql-auto-increment.aspx mais n'ont pas eu de chance avec PL/SQL. Toutes les pensées?
update table
set table.column = var1 = var1 + 1
where table.column2 = "value';
Il semble ne pas aimer l'incrémentation de var1 dans la seconde moitié do l'ensemble de la ligne de
Je devrais avoir mentionné que var1 est défini ci-dessus par trouver la valeur max de la table.colonne de cette table.
Il y a une question similaire, here.
Il y a une question similaire, here.
OriginalL'auteur typhoid | 2011-11-08
Vous devez vous connecter pour publier un commentaire.
Un peu de PL/SQL pour contenir l'original max ID. À l'aide de ROWNUM résout le problème de l'incrémentation d'un compteur:
Cela vous donnera une ID unique pour COL1 qui ne pas entrer en collision avec COL1 pour les autres de la valeur de COL2.
OriginalL'auteur APC
Basé sur ce qui se passe dans le lien que vous avez fourni, je pense que ce que vous voulez vraiment est-ce:
Ceci permettra de définir chaque ligne dans la table pour la "valeur" d'un unique entier, en commençant à 1. Les valeurs ne seront uniques pour cette valeur, cependant. Vous pouvez ajouter le numéro de rangée pour le courant max de valeur à eux tous plus de toutes les valeurs existantes (comme on le voit dans @APC de réponse).
Il convient de noter que ce n'est pas sécuritaire de le faire si il n'y a aucune chance de multiples insertions et/ou mises à jour sur cette colonne qui se passe en même temps (c'est à dire que c'est probablement correct de faire cela comme une solution temporaire, mais il ne devrait pas être une routine régulière (et certainement ne devrait pas être utilisé dans le code)). Dans ce cas, vous devez certainement être en utilisant une séquence.
OriginalL'auteur Allan
Ce qui pourrait fonctionner mieux pour vous:
Sonne comme ce que vous avez besoin est ce que @Wolf a dit, une séquence. Sinon, vous pourriez faire ceci:
Espérons-le, colonne2 les valeurs sont uniques, ou bien vous retrouver avec des doublons.
Je ne suis pas sûr de ce que vos besoins spécifiques sont dans ce cas, mais avez-vous songé à l'aide d'une séquence? Une séquence vous garantit des valeurs uniques sans la surcharge de trouver la valeur max. Si vous aussi, vous devez faire la combinaison
table.column
ettable.column2
unique, alors vous devriez également envisager d'ajouter une contrainte unique pour cette paire de colonnes.OriginalL'auteur Lost in Alabama