Solay 0 Denunciar post Postado Novembro 17, 2006 Tem como criar um campo autonumeração no oracle como no sqlserver, que eu não preciso passar esse campo no insert, o próprio banco preenche ele.Me falaram que eu deveria criar uma sequência, mas como eu crio essa sequência e passo no insert esse campo? Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Novembro 21, 2006 Olá Solay, Segue como criar e utilizar uma sequence. SQL*Plus: Release 10.2.0.1.0 - Production on Ter Nov 21 10:58:50 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> select instance_name from v$instance;INSTANCE_NAME----------------xeSQL> create sequence TST_IMASTERS 2 start with 1 3 increment by 1 4 maxvalue 9999 5 nocycle;Seq³Ûncia criada.SQL> create table RODRIGO (a number(4), b varchar2(100));Tabela criada.SQL> select * from RODRIGO;nÒo hß linhas selecionadas SQL> insert into RODRIGO values (TST_IMASTERS.NEXTVAL,'TESTE 1');1 linha criada.SQL> insert into RODRIGO values (TST_IMASTERS.NEXTVAL,'TESTE 2');1 linha criada.SQL> commit;Commit concluÝdo.SQL> select * from RODRIGO; A B---------- ---------------------------------------- 1 TESTE 1 2 TESTE 2 Caso queira saber como utilizar melhor a SEQUENCE, leia a coluna da iMasters. Objeto Sequence do Oracle Abraços, B) Compartilhar este post Link para o post Compartilhar em outros sites
Geo Lima 0 Denunciar post Postado Fevereiro 6, 2009 Ótima ajuda Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Fevereiro 6, 2009 Geo Lima A intenção foi boa mas este topico é de 2006 Se deseja realmente ajudar o faça em topicos recentes Compartilhar este post Link para o post Compartilhar em outros sites
Ivan Neko 0 Denunciar post Postado Março 27, 2011 humm desculpa reviver o topico... mas o sistema de auto-incremento do oracle continua o mesmo sugerido nesse topico ? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 27, 2011 Sim , mas você pode melhorar a solução dada.Mantenha a sequence create sequence TST_IMASTERS start with 1 increment by 1 maxvalue 9999 nocycle; Crie uma trigger de before insertCREATE OR REPLACE TRIGGER TRG_IMASTERS FRO EACH ROW BEFORE INSERT IN RODRIGO BEGIN IF :NEW.A IS NULL THEN :NEW.A := TST_IMASTERS.NEXTVAL; END IF; END; Esta trigger permite a insersão sem usar a trigger.insert into RODRIGO (b) values ('TESTE 1'); mas permite também que a chamada seja feita também pelo comano INSERT.insert into RODRIGO values (TST_IMASTERS.NEXTVAL,'TESTE 2'); Isto dá flexibilidade na camada de front-end. Compartilhar este post Link para o post Compartilhar em outros sites
Ivan Neko 0 Denunciar post Postado Março 27, 2011 ah agora axo q capitei a parte onde ele insere o valor do auto incremento na coluna do codigo TST_IMASTERS.NEXTVAL esse cara aki vai na coluna q você ker o auto incremento certo ? eu tava testando ontem e nen me tokei aheahea vlw Motta Compartilhar este post Link para o post Compartilhar em outros sites
Ivan Neko 0 Denunciar post Postado Março 28, 2011 bom uma outra duvida q apareceu aki agora eh tipo: arrumei o auto incremento e tals mas se eu deleto um valor do meio da tabela como eu faço pra um novo item receber o valor dakela linha ?? ou entao re-organizar os q tao pra frente do q foi deletado ? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 28, 2011 Não recebe, uma sequence garante unicidade e não integridade na sequencia, algumas aplicações como Apólice de Seguro ou Nota Fiscais não permitem banguelas, a solução é criar uma tabela para guardar estas sequencias e não permitir a deleção física e sim algum tipo de cancelamento ou baixa que permita o registro da operação. Compartilhar este post Link para o post Compartilhar em outros sites