Aide en sql

Résolu
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 - 3 nov. 2005 à 12:55
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 - 7 nov. 2005 à 21:53
Bonjour tout le monde,

J'aimerais savoir si il y a une fonction sql pour rendre un champ de base de données incrémentelles. Je m'explique, j'ai une table groupe qui comporte les champs suivant :

PK_NUMGR INTEGER NOT NULL,
NOM_GROUP VARCHAR
SIGLE VARCHAR

J'aimerais que le champ PK_NUMGR soit incrémentelle, donc que à chaque enregistrement d'un nouveau groupe il fasse +1,

Si quelqu'un pouvait m'aider ce serait sympa,

@+

Stu76

7 réponses

vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
7 nov. 2005 à 12:32
Bonjour,



Avec Interbase, tu dois en effet utiliser les générateurs et les triggers.

Voici un exemple de code sql que j'extrais d'une de mes bases de données :



CREATE GENERATOR GEN_AVIS ;


SET GENERATOR GEN_AVIS TO 0;



CREATE TRIGGER TG_AVIS_INCIDENT FOR AVIS_INCIDENT ACTIVE

BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id(gen_avis,1);

end



Ce script SQL va créer un générateur nommé gen_avis et l'initialisé à 0.

Ensuite, un trigger, nommé, tg_avis_incident, sera créé pour la table avis_incident.

Il aura lieu avant chaque nouvelle insertion d'un record dans la table.

Le champ id du nouveau record se verra assigné la valeur obtenue par la fonction gen_id(gen_avis,1). Cette fonction va incrémenter le générateur gen_avis d'une unité avant l'insertion du nouveau record.



On a ainsi créer un autoincrément bine utile pour les intégrités référentielles et autres clefs primaires.


Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.
3
jace1975 Messages postés 81 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 12 octobre 2007 1
3 nov. 2005 à 20:18
tu travailles sur quel SGBD??
0
cs_ebi Messages postés 9 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 25 juillet 2006
3 nov. 2005 à 21:27
Bonsoir stu76,


je regrette, c'etait une response vide ...avant.


alors je pense, qu'on peut construire un champ d'increment avec un generateur(interbase,oracle)
et un trigger,qui lance un increment (+1) apres chaque addition d'un record.
sinon,il y a quelquefois des bases de donnees, qui ont un champ d'increment (interbase).

il me faudrait savoir avec quel base tu travailles,

salut

Ebi






Delphi fait plaisir,sonst wäre ich nicht hier.
0
Abadianet Messages postés 40 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 19 juin 2006 1
4 nov. 2005 à 00:27
Salut,

La réponse réside dans le type de la donnée que tu utilises.
Par exemple, dans Absolute Database que j'utilise, la variable a comme type : AUTOINC

Dans ton cas, tu ne dois pas définir PK_NUMGR comme INTEGER mais comme ... (Regarde dans la doc de base de données)

Abadiane
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
4 nov. 2005 à 01:00
Je dirais : PK_NUMGR
INTEGER NOT NULL AUTO_INCREMENT

Cordialement.


<HR>
Il existe 10 catégories de personne. Ceux qui connaissent le binaire et les autres...
0
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 1
4 nov. 2005 à 07:16
Bonjour tout le monde,

Merci pour votre aide, en faite je travail avec des bases de données de type interbase mais je vais déjà regardé avec vos infos.

merci et bonne prog,

Stu76
0
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 1
7 nov. 2005 à 21:53
Bonsoir à tous,

Merci pour votre aide j'ai testé le code de vincent c'est nickel, merci pour tout et bonne prog à tous.

@+

Stu76
0
Rejoignez-nous