AJOUT D4UNE LIGNE DANS UNE TABLE SQL

Fermé
step Messages postés 27 Date d'inscription vendredi 8 juin 2001 Statut Membre Dernière intervention 10 juillet 2001 - 20 juin 2001 à 10:12
step Messages postés 27 Date d'inscription vendredi 8 juin 2001 Statut Membre Dernière intervention 10 juillet 2001 - 20 juin 2001 à 14:51
Je voudrais creer une table avec une incrementatioin automatique de la cle .
Est-ce-que quelqu'un a une idée?
Merci
Environnement : Solaris, Oracle 8i et PHP4
A voir également:

2 réponses

create table CCM1(
clef int(10) auto increment,
etc........,
);

Voila...et puis apres tu fais ta jointure.

A bientot
0
step Messages postés 27 Date d'inscription vendredi 8 juin 2001 Statut Membre Dernière intervention 10 juillet 2001
20 juin 2001 à 12:05
Merci lol,
mais j'ai une erreur lorsque j'essaie :
Si tu as une idée ? *
Erreur SQL:ORA-00922: missing or invalid option
Code SQL :
create table ST_LIBELLE
(
ID_LIBAUTO NUMBER(3) NOT NULL auto increment,
LIBELLE VARCHAR2(50) null,
constraint PK_ST_LIBELLE primary key (ID_LIBAUTO)
)
TABLESPACE STAT_TABLES_SPACE
/
0
Tittom Messages postés 422 Date d'inscription mardi 30 mai 2000 Statut Membre Dernière intervention 10 janvier 2007 128
20 juin 2001 à 14:24
Salut,

La solution indiquée par lol ne fonctionne pas car "auto increment" n'est pas une option valide d'Oracle.

Dans ton cas, je pense que l'utilisation d'une séquence est appropriée. Une séquence est un compteur dont la valeur est auto incrémentée, et stockée dans la base.

pour créer la sequence en question :
CREATE SEQUENCE seq_nom_table;

Une fois qu'elle est créée, tu peux accéder à sa valeur de deux manières :
- seq_nom_table.currval est une fonction qui retourne la valeur actuelle de la séquence.
- seq_nom_table.nextval est une fonction qui retourne la valeur actuelle de la séquence, et l'incrémente automatiquement (ou l'inverse, je ne sais plus).

Tu peux ajouter des paramètres à ton CREATE SEQUENCE pour indiquer le n° de départ, l'incrément, etc... (voir doc Oracle)


Une fois que tu as ta séquence, tu peux créer un trigger qui se déclenchera AVANT chaque insert dans ta table, et qui se chargera de mettre à jour la valeur de la colonne devant être auto incrémentée en récupérant le nextval de la séquence.

Voilà pour le principe. Je n'ai pas Oracle sous la main alors je ne préfère pas te donner d'exemple sans le tester, mais tu peux chercher "oracle auto increment" sur http://groups.google.com, si tu te débrouilles en anglais tu trouveras des exemples que tu pourras adapter à ton cas...


J'espère que cela t'aidera...

Tittom, adepte de l'Oracle :))
0
step Messages postés 27 Date d'inscription vendredi 8 juin 2001 Statut Membre Dernière intervention 10 juillet 2001
20 juin 2001 à 14:51
Merci pour ta reponse .
N'y-a-t-il pas une solution avec IDENTITY (1, 1) ?
0