Page 1 sur 1

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

Posté : 03 déc. 2007, 22:04
par Gosth35
Bonjour,

j'ai un petit soucis avec ma BdD SQL.

La table a été déclarée comme suis:

Code : Tout sélectionner

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

Posté : 03 déc. 2007, 22:33
par zeus
Tiens, un peu de lecture : Pourquoi ne pas modifier un identifiant ;)

Posté : 03 déc. 2007, 22:41
par Invité
Bonjour,

admettons que ce n'est pas l'id que je veux modifier , mais une autre clé ...
:-k

Posté : 03 déc. 2007, 22:45
par zeus
OK, c'est toi qui vois ;)

Donc, dans l'idée, ce que tu recherches à faire, c'est d'incrémenter (ajouter 1) à tous les enregistrements dont la valeur est supérieure ou égale à la valeur à insérer.
Il ne te reste plus qu'à traduire cette phrase en une requête SQL pour faire ce que tu demandes ;)

Posté : 03 déc. 2007, 22:52
par Invité
C'est exactement cela !!

Bien formulé, je n'aurai pas trouvé mieux :)

Seulement voila, avec une boucle j'arriverai à le faire, mais existe t'il une fonction faisant de même ?

Posté : 03 déc. 2007, 22:56
par zeus
Tu peux tout faire en une seule requête ;)

Code : Tout sélectionner

UPDATE leNomDeTaTable SET champ = champ+1 WHERE champ >= laValeurQueTuVeuxInserer

Posté : 03 déc. 2007, 22:59
par Gosth35
Ok d'accord, tu est mon dieu pour la soirée :agenouille: :agenouille: :agenouille:

Merci, je bosse sur des iptables gérées pas BdD, et comme je n'ai que des notions en SQL ...

Bonne soirée =D>