498 votes

Comment créer un identifiant avec AUTO_INCREMENT sur Oracle ?

Il semble qu'il n'existe pas de concept d'AUTO_INCREMENT dans Oracle, jusqu'à la version 11g incluse.

Comment puis-je créer une colonne qui se comporte comme un auto-incrément dans Oracle 11g ?

-1voto

abhishek ringsia Points 1058
  create trigger t1_trigger
  before insert on AUDITLOGS
  for each row
   begin
     select t1_seq.nextval into :new.id from dual;
   end;

il suffit de changer le nom de la table (AUDITLOGS) par votre nom de table et new.id par new.column_name.

-1voto

FUNCTION UNIQUE2(
 seq IN NUMBER
) RETURN VARCHAR2
AS
 i NUMBER := seq;
 s VARCHAR2(9);
 r NUMBER(2,0);
BEGIN
  WHILE i > 0 LOOP
    r := MOD( i, 36 );
    i := ( i - r ) / 36;
    IF ( r < 10 ) THEN
      s := TO_CHAR(r) || s;
    ELSE
      s := CHR( 55 + r ) || s;
    END IF;
  END LOOP;
  RETURN 'ID'||LPAD( s, 14, '0' );
END;

-2voto

Martin Hlavaj Points 75

Essayez peut-être ce simple script :

http://www.hlavaj.sk/ai.php

Le résultat est :

CREATE SEQUENCE TABLE_PK_SEQ; 
CREATE OR REPLACE TRIGGER TR_SEQ_TABLE BEFORE INSERT ON TABLE FOR EACH ROW 

BEGIN
SELECT TABLE_PK_SEQ.NEXTVAL
INTO :new.PK
FROM dual;
END;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X