- Este tópico contém 12 respostas, 4 vozes e foi atualizado pela última vez 17 anos, 11 meses atrás por
Marcio68Almeida.
-
AutorPosts
-
24 de março de 2008 às 8:47 pm #81490
bender
ParticipanteOla pessoal, criei uma sequencia para auto-incrementar determinados campos em algumas tabelas, mas como faco pra aplicar essa “sequence” na tabela q eu quero???
Obrigado.
24 de março de 2008 às 9:06 pm #81491Ishii
ParticipanteBender,
Você terá que criar uma Trigger para que a cada inserção o campo seja preenchido com esta sequence. Se você quiser pode alterar nos inserts mesmo mas acho que com a Trigger fica mais prático.
[]s Ishii
24 de março de 2008 às 11:24 pm #81496bender
ParticipanteVishi… eu sou novo no oracle… e em banco de dados tb, nao sei mecher com isso nao… 😕
Mas agradeço pela ajuda, valeuuu! ! !
24 de março de 2008 às 11:32 pm #81497Ishii
ParticipanteTente:
CREATE OR REPLACE TRIGGER
BEFORE INSERT
on
for each row
if :new. is null then
select .nextval
into :new.
from dual;
end if;
end;[]s Ishii
25 de março de 2008 às 5:23 pm #81504marcelomirandola
ParticipanteSe você estiver utilizando o Form, pode colocar o código no gatilho Pre-Insert.
select nome_da_sequencia.nextval from dual into v_seq
….
Quando for fazer o insert:
insert into tabela values (v_seq, …..)
25 de março de 2008 às 5:26 pm #81505marcelomirandola
ParticipanteMe desculpe bender, o select é assim:
select nome_da_sequencia.nextval
into v_seq
from dual;Marcelo 🙂
25 de março de 2008 às 8:40 pm #81511bender
ParticipanteCriando a Trigger qd for gravar dados no banco automaticamente o banco ja chama essa TRIGGER ou tenho q chama-la via codigo no meu sistema???
Obrigado! ! !
25 de março de 2008 às 8:52 pm #81512marcelomirandola
ParticipanteAs triggers são disparadas automaticamentes de acordo com os eventos escolhidos.
No seu caso, vc deveria criar uma trigger com before insert, para ser acionada sempre antes da inserção dos dados.Toda vez que houver um insert na tabela, esta trigger será acionada automaticamente.
25 de março de 2008 às 9:05 pm #81513bender
ParticipanteGalera deu certinho…. 😀
muito obrigado pela ajuda de vcs…. !!!
25 de março de 2008 às 9:47 pm #81514bender
ParticipanteSo mais uma coisinha galera, tem como fazer dentro uma trigger só incrementando mais de uma tabela???
Obrigado! ! !
25 de março de 2008 às 9:53 pm #81515marcelomirandola
ParticipanteTer tem, mas não faz sentido.
O auto incremento serve para vc incrementar um dado da tabela em questão, como por exemplo um código. Porque você incrementaria o código da tabela de clientes se você estiver inserido dados na tabela de pedidos?25 de março de 2008 às 10:27 pm #81517bender
ParticipanteHummm, é verdade marcelo, nao faz sentido oq estou pensando nao…
valeu pela ajuda! ! !
25 de março de 2008 às 10:42 pm #81518Marcio68Almeida
Participante[quote=”bender”:2jpu62h1]So mais uma coisinha galera, tem como fazer dentro uma trigger só incrementando mais de uma tabela???
[/quote]
Muito cuidado com as triggers…
Quando você faz uma trigger atualizar outra tabela, você inicia um processo em cascata, já vi esse processo abrangendo vários níveis (uma trigger starta outra que starta outra e assim por diante), se alguma parte do processo dá erro, é necessário dar rollback em todo o processo, sem dizer que todas as tabelas envolvidas ficam em lock enquanto o processo não está resolvido… -
AutorPosts
- Você deve fazer login para responder a este tópico.