IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Equivalent Sequence Oracle en SQLServer


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Equivalent Sequence Oracle en SQLServer
    Bonjour,

    Je suis à la recherche de l'équivalent des séquence Oracle en SQLServer.

    Cela consiste a réaliser un compteur qui s'incremente à chaque fois que l'on réalise un select sur l'objet.

    Doit on faire cela à l'ancienne avec SQLServer ??? table + trigger ?

    merci pour vos réponses

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Mais les triggers ne se déclenche pas avec la commande Select.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 84
    Points
    84
    Par défaut Séquences en select ???
    Bonjour,
    Je sais que les sequences sont sur Oracle pour gérer les compteurs. Mais je n'ai jamais vue de séquence pour incrémenter à chaque select ( Je n'y trouve, personnellmenet aucune importance ).
    Pour les compteurs, SQL Server les gère de manière impécable par les IDENTITY.[/img]

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Petite rappel pour une utilisation correcte d'une séqunce sous Oracle (même si ce n'est pas le lieu d'en parler) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select maSequence.nextval from dual
    Après cela la séquence est incrémenté de n (n étant la valeur d'incrémentation choisit à la création de la séquence).
    D'où mon propos d'incrémentation à chaque Select

    Concernant ma question initial, c'est bien identity qui m'interesse

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par Gabbe_pro
    Concernant ma question initial, c'est bien identity qui m'interesse
    Mais Ca ne marche jamais avec un Select !!!
    Et je veux insister là dessus.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mais Ca ne marche jamais avec un Select !!!
    En Oracle ??? Car le code que je t'ai mis marche très bien et sur nombre de projet.

    Ensuite sur SqlServer c'est autre chose.

  7. #7
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Sur Oracle effectivement, c'est l'appel à la méthode nextval qui incrémente le compteur, que ce soit dans un select ou un insert...

    Cet effet est envisageable via MS-SQL au travers d'une table de compteurs.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  8. #8
    Candidat au Club
    Inscrit en
    Mars 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    je rebondis sur la proposition de "Fadace" sur la table de compteur.
    En effet, je cherche moi aussi a retrouver le fonctionnement du NextVal sous oracle.
    Je souhaite recuperer via une requete sql une valeur faisant office de compteur. Donc, une fois que j'ai recuperé cette valeur, il faut qu'elle soit incrementée d'une unité pour la prochaine demande. Le fonctionnement de NextVal quoi :-)

    La seule solution que j'ai trouvé avec MSSQL sans les identity correspond en gros à ca:
    Créer une table Compteur avec deux colonnes : NomCompteur, ValCompteur

    Créer une fonction NextValFromCompteur(NomCompteur)
    Dans cette fonction, je fais un lock sur la table compteur , je recupere ma valeur pour un nom de compteur donné, je fais un update de ma valeur+1 et je renvoie ma valeur...

    Je n'ai pas mis de code car je ne connais pas du tout MSSQL, donc je ne sais pas encore faire ce que j'explique au dessus :-)

    Je voudrais juste savoir si c'est la bonne methode ou s'il existe plus simple... Et si quelqu'un à deja réaliser ce genre de table et de fonction et qu'il veut bien partager son code alors là je serais comblé

    Mais sinon juste savoir si c'est la bonne methode serait deja un grand pas pour moi. Merci


  9. #9
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 72
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Wrapp Voir le message
    Bonjour,

    La seule solution que j'ai trouvé avec MSSQL sans les identity correspond en gros à ca:
    Créer une table Compteur avec deux colonnes : NomCompteur, ValCompteur

    Créer une fonction NextValFromCompteur(NomCompteur)
    Dans cette fonction, je fais un lock sur la table compteur , je recupere ma valeur pour un nom de compteur donné, je fais un update de ma valeur+1 et je renvoie ma valeur...
    Je reviens sur du vieux stock, car c'est exactement ma question. Quelqu'un a une idée ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/10/2008, 13h58
  2. [Debutant]Vue impliquant des tables Oracle et SQLServer
    Par Wisefool dans le forum Débuter
    Réponses: 4
    Dernier message: 31/08/2005, 11h46
  3. couplage base de données oracle et sqlserver avec c et c++
    Par mloul dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 22/11/2004, 14h00
  4. Equivalent sous Oracle d une option SQLServer
    Par Pasiphae dans le forum Oracle
    Réponses: 3
    Dernier message: 19/11/2004, 17h30
  5. [Comparatif] DB2, Oracle et SQLServer
    Par Laurent MALAVASI dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 25/10/2002, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo