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

Langage SQL Discussion :

Insérer une valeur déjà existante dans une Primary Key


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Insérer une valeur déjà existante dans une Primary Key
    Bonjour,

    j'ai un petit soucis avec ma BdD SQL.

    La table a été déclarée comme suis:
    CREATE TABLE IF NOT EXISTS snoop_rules (
    id INT( 100 ) NOT NULL AUTO_INCREMENT,
    int_LAN VARCHAR (5),
    PRIMARY KEY ( `id` )) ENGINE = MYISAM ;


    Prenons l'exemple où j'ai déjà 5 entrées de créer, donc avec des id de 1 à 5.
    Je veux insérer une nouvelle entrée, avec en paramètre un n° d'ID déjà existant (par exemple id=2).


    Existe-il une commande permettant de décaler automatique les id déjà existant de 1; par exemple:
    le 1 reste 1
    le 2 devient 3
    le 3 devient 4
    le 5 devient 5
    le 6 devient 6
    et un id=2 est alors insére.


    J'espère avoir été clair.
    Merci pour vos réponses.

    Gosth35

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 776
    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 776
    Points : 52 751
    Points
    52 751
    Billets dans le blog
    5
    Par défaut
    Si l'auto incrément à été créé en génération "non always", c'est possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SET ISOLATION LEVEL SERIALIZABLE;
    START TRANSACTION;
     
    UPDATE snoop_rules 
    SET ID = ID + 1
    WHERE ID > 1;
     
    INSERT INTO snoop_rules (ID, int_LAN) VALUES (2, ...);
     
    COMMIT WORK;
    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/ * * * * *

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup

Discussions similaires

  1. Comment insérer une valeur en pourcentage dans une table
    Par abdel_java dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 28/05/2014, 15h58
  2. Réponses: 4
    Dernier message: 01/02/2013, 16h05
  3. Réponses: 2
    Dernier message: 01/02/2013, 15h50
  4. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  5. insérer une valeur 'max + 1' dans une table
    Par pierre.egaud dans le forum Access
    Réponses: 2
    Dernier message: 13/04/2006, 15h00

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