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

Requêtes MySQL Discussion :

Auto-incrémentation en fonction de la clé primaire


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut Auto-incrémentation en fonction de la clé primaire
    Bonjour,

    J'ai une table avec une clé primaire constituée de deux champs :

    id |site

    Je souhaiterais que le champ id s'auto incrémente en fonction de la clé primaire, cad, si le numéro du site change, je recommence un auto incrément.

    Exemple :

    id | site
    1 | 1
    2 | 1
    3 | 1
    1 | 2
    2 | 2
    4 | 1

    Est ce possible en sql ?

    Merci d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Je pense que tu dois crée un trigger qui vérifier si le compte du max(site) == 1 alors tu insert dans id 1 sinon tu incrément id
    A la recherche d'un film : http://chercher-un-film.com

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Un trigger ? Connais pas

    Tu aurais un exemple stp ? Là je vois pas vraiment.

    Merci.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Trigger == déclencheur
    c'est du code qui se déclenche automatiquement après une opération("insert","update","delete").

    pour l'exemple si-dessus la valeur de id de la requête d'insertion doit être 0, il sera changé après insertion.

    ce trigger est ecrit en sql .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    create trigger monTrigger
    after insert
    on matable
    as
    begin
    declare @i int,@site int
    set @site = (select site from inserted)
    set @i =(select max(id) from matable where site = @site)
    if(@i == 0)
            update ma table set id = 1 where site = @site
    if(@i > 0)
            update ma table set id = @i + 1 where site = @site and id = 0
    end
    A la recherche d'un film : http://chercher-un-film.com

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Merci de ton aide, mais il semblerait que mon serveur n'accepte pas les @ ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS begin declare @i int,@site_id int SET @site_id = (SELECT site_id FROM inse' at line 4

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    étrangement j'aurai opté pour un trigger before insert, ce qui permet de se passer des update, tu dois avoir une raison... mais comme la question initiale est pas claire, un autoincrement ça ne fait que s'incrémenter, c'est une clef artificielle: elle ne doit pas dépendre de la donnée.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Merci de ton aide, mais il semblerait que mon serveur n'accepte pas les @ ?
    Cherche la syntaxe correcte sous mysql.
    A la recherche d'un film : http://chercher-un-film.com

  8. #8
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Merci de toutes les réponses, j'essaie très rapidement tout ça.

  10. #10
    Membre habitué Avatar de giltonic
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 109
    Points : 137
    Points
    137
    Par défaut
    si on parle de vrai "Auto-incrément" de la base, c'est forcement un champs unique donc ici c'est juste une clé unique et pas un champs auto_increment
    Musique : Oasis | Photos : Panoramio

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par giltonic Voir le message
    si on parle de vrai "Auto-incrément" de la base, c'est forcement un champs unique donc ici c'est juste une clé unique et pas un champs auto_increment
    Ce que vous dite est idiot... Il n'y a aucune implication entre autoincrémentation et unicité. Ce sont deux choses différentes. En effet rien n'empêche de forcer des valeurs manuellement dans une colonne auto incrémentée !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. création clé primaire auto incrémentable SQL ACCESS ?
    Par colorid dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 23/11/2007, 14h25
  2. [MySQL] Identifiant Primaire qui s'auto incrémente
    Par The Molo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/04/2007, 13h58
  3. Réponses: 3
    Dernier message: 15/02/2007, 12h02
  4. [TRANSACT-SQL] clé primaire qui s'auto-incrémente
    Par DonJR dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/05/2006, 11h16
  5. [VB.NET] [ADO.NET] Clef primaire auto incrémenté
    Par Guld dans le forum Accès aux données
    Réponses: 4
    Dernier message: 25/09/2004, 20h46

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