DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Izac claudino da silva junior
 

País: Brasil
Estado: DF
Cidade: BRASILIA
Mensagens: 1
 Postado em: 12/8/2011 1:09:08 AM

preciso de ajuda para criar uma trigger de auto icrement no campo id_aluno que nao precise digitar nenhum valor
seja automatico:

#Código

 CREATE SEQUENCE   "ALUNO_NOVO"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE
/


CREATE OR REPLACE
TRIGGER ALUNO_TRIGG BEFORE INSERT ON ALUNO
FOR EACH ROW
BEGIN
  <<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
Marco Pinheiro
 
 


País: Brasil
Estado: MG
Cidade: Belo Horizonte
Mensagens: 110
 Postado em: 16/8/2011 10:13:46 AM
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.

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03