28-10-2003 11:11 Hop la, je me permet de ramener ma fraise etant dba oracle...
Le moyen de creer une clef autoincrementée sous oracle est sous la forme d'une sequence+ trigger .
(Une sequence est un objet qui s'auto incremente quand on y fait appel)
piti exemple, c'est toujours plus parlant.
je veux que la colonne Id de ma table test s'autoincremente dés que j'ajoute un enregistrement dans celle ci
#Creation de la table
create table test (id number , data varchar2(10));
#creation de la sequence
Create sequence my_seq start with 1 increment by 1 nocycle cache 5;
# Creation du trigger
create or replace trigger inc_test_id
before insert on test
for each row
declare
n number;
begin
if :old.id is null then
select my_seq.nextval into n from dual;
:new.id := n;
end if;
end;
/
Chaque appel a my_seq.nextval incrementera la clef. La valeur initiale etant definie a la creation
SQL>select my_seq.nextval from dual ;
NEXTVAL
----------
1
SQL> select my_seq.nextval from dual ;
NEXTVAL
----------
2
Si maintenant je fais des insertions dans la table test
SQL>insert into test (data) values ("Hello1");
SQL>insert into test (data) values ("Hello2");
SQL>insert into test (data) values ("Hello3");
On verifie que la sequence est bien incrementée.
SQL>select * from test;
ID DATA
---------- ----------
1 Hello1
2 Hello2
3 Hello3
ATTENTION: il peut y avoir des 'trous' dans la creation , la sequence ne garantie que l'unicité des id, c'est de toute facon inutile et illogique de vouloir absolument des chiffres qui se suivent (que se passe t il quand on supprime un enregistrement

?) .
__________________
Myrtul
:wq
| IP: Logguée