Fórum Dificuldade de criar trigger #406458

12/08/2011

0

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

Responder

Posts

16/08/2011

Wilson Junior

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.
Responder

Gostei + 0

16/08/2011

Marco Pinheiro

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar