sélectionnez la valeur maximale d'une colonne dans la table avec des lignes
Je suis en utilisant la base de données oracle
Lors de l'insertion d'une ligne dans une table, j'ai besoin de trouver la valeur maximale d'une colonne et de l'incrémenter de 1, et utiliser cette valeur dans la ligne je suis de l'insertion.
INSERT INTO dts_route
(ROUTE_ID, ROUTE_UID, ROUTE_FOLDER)
VALUES (
(SELECT MAX(ROUTE_ID) + 1 FROM route) ,
ROUTE_UID,
ROUTE_FOLDER)
Cela fonctionne bien si leur est au moins une entrée dans la table.
Mais retourne null quand leur sont pas entrées dans le tableau.
Comment puis-je obtenir défaut la valeur 1 lorsqu'leur sont pas entrées dans le tableau.
OriginalL'auteur changed | 2011-02-04
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur codymanix
Ce n'est pas un moyen sûr de créer un champ à incrémentation automatique. Vous pouvez utiliser une séquence Oracle pour atteindre cet objectif.
Comme pour les nuls, vous pouvez utiliser
NVL
donner une valeur par défaut (0) dans le cas où la fonction retourne null.OriginalL'auteur Ilya Kogan
Utilisation de la séquence ID. Vous avez besoin pour créer de la séquence. Voir lien ci-dessous
http://www.basis.com/onlinedocs/documentation/b3odbc/sql_sequences.htm
OriginalL'auteur Chirag Tayal
Utilisation:
...mais vous devez vraiment être à l'aide d'un séquence pour remplir la valeur d'une séquence de valeur numérique:
...
La dernière personne à qui j'ai bavardé avec testé, et ne pas voir les problèmes à travers des sessions.
Juste l'envoi d'un avertissement à quelqu'un qui veulent utiliser l'option de CACHE et attend +1 chaque/chaque fois. Nos Administrateurs de base de données n'a activé la mise en cache une fois, s'attend à un gain de performance, et à la place nous avons eu une belle surprise lors de la séquence de nombres ont été "sauter" des valeurs.
Mise en cache des séquences n'ont pas un problème à travers des sessions. Ils vont ignorer des valeurs si la séquence est utilisée assez rarement que le cache âges de la piscine commune ou si la base de données est redémarré.
OriginalL'auteur OMG Ponies
Définir une valeur par défaut NULL
bien que l'utilisation d'une séquence peut être plus facile si vous n'avez pas l'esprit de l'impair, les lacunes dans votre itinéraire id
OriginalL'auteur Mark Baker
Si vous êtes inquiet à propos de l'existence de lacunes dans votre itinéraire id puis créer la séquence avec le NOCACHE clause:
Remarque qu'il y a un gain de performance parce que Oracle a maintenant à "s'engager" à chaque fois que vous incrément de la séquence.
OriginalL'auteur PyreneesJim