Dificuldade de criar trigger

Oracle

12/08/2011

preciso de ajuda para criar uma trigger de auto icrement no campo id_aluno que nao precise digitar nenhum valorseja automatico:
 CREATE SEQUENCE   "ALUNO_NOVO"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE/

CREATE OR REPLACETRIGGER ALUNO_TRIGG BEFORE INSERT ON ALUNOFOR EACH ROWBEGIN  <<COLUMN_SEQUENCES>>  BEGIN    IF :NEW.ID_ALUNO IS NULL THEN      SELECT ALUNO_NOVO.NEXTVAL INTO :NEW.ID_ALUNO FROM DUAL;    END IF;  END COLUMN_SEQUENCES;END;


me ajudem
Izac Junior

Izac Junior

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

12/08/2011

de uma olhada nestes links
http://earlruby.org/2009/01/creating-auto-increment-columns-in-oracle/
http://www.bau-de-dev.com/banco-de-dados/como-criar-um-campo-auto-increment-no-oracle
http://www.datanamic.com/support/autoinc-oracle.html

Espero ter colaborado.
GOSTEI 0
Marco Pinheiro

Marco Pinheiro

12/08/2011

Tente usar este comando. Onde está:

SELECT ALUNO_NOVO.NEXTVAL INTO :NEW.ID_ALUNO FROM DUAL;

Tente

SELECT ROW_NUMBER() OVER (PARTITION BY campo ORDER BY campo) AS IDPARTIDA INTO :NEW.ID_ALUNO FROM DUAL;

Este comando já faz o sequencial sem usar o SEQUENCE.

Onde está o comando PARTITION BY vc pode usar como quebra. Tipo assim:

Filial       Sequencial
  1                2
  1                1
  2                3
  2                0
  2                5


Usando o PARTITION BY ele faz a quebra, assim:


Filial       Sequencial
  1                1
  1                2
  2                1
  2                2
  2                3


Sem o PARTITION BY ele faz o sequencial puro:


Filial       Sequencial
  1                1
  1                2
  2                3
  2                4
  2                5


Att.,

Marco.
GOSTEI 0
POSTAR