create or replace trigger TRG_TABELA_TRANSACAO
before insert on TABELA_TRANSACAO
for each row
declare
-- local variables here
begin
SELECT transacao_seq.nextval
INTO :new.ID
FROM dual;
end TRG_TABELA_TRANSACAO;
você tem um bloco multi- record? você pode fazer um get no blocos e pegar o current_record,
que é o seguencial de registro,
ou se não é um multi record, e é comitado registro a registro, você pode fazer uma query que retorne um seguencial por CD_TRANSACAO,
com certeza, fazer um "MAX + 1" não é uma boa prática, mas tudo depende da situação,
neste caso pelo que eu entendi ele terá um numero de itens para cada transação,
teria que ter uma numero de itens representativo para que seja notada a lentidão,
sendo que ele teria que buscar o sequencial da transação e não da tabela,
mas, tudo depende do caso,
DECLARE
CURSOR CUR_INCREMENTO IS
SELECT MAX(NVL(:TB_ITEMTRANSACAO.NR_SEQ,0)) + 1
FROM TB_ITEMTRANSACAO WHERE CD_PRODUTO = :BLK_LANCAMENTO.CD_LANCAMENTO;
BEGIN
OPEN CUR_INCREMENTO;
FETCH CUR_INCREMENTO INTO :TB_ITEMTRANSACAO.NR_SEQ;
CLOSE CUR_INCREMENTO;
END;
mas sempre que faço o processo ele joga 1 para cadas registro no campo NR_SEQ
Para dar certo a sequencia você teria que comitar registro a registro, pois ele busca o max do banco, que, se você não comitou o registro anterior ele será sempre o mesmo,
como fazer para atualizar a sequencia de um bloco multi recorde se por exemplo, excluir um registro do meio da sequencia, como reordenar o sequenciamento?
tentei algumas alternativas de percorrer o bloco com loop para refazer a sequencia, mas não estou sabendo qual trigger usar, algumas são restritas e não permitem
ola, bom dia... preciso fazer o mesmo, inserir um sequencia para o proximo cadastro, no meu caso esse sequencial seria NR DE PORTARIA, então queria q o form já abrisse com esse nr preenchido... porem, como tenho apenas 1 mês no apex5, não sei onde eu coloco o codigo para funcionar, poderiam me ajudar??