Caba da TI

Caba da TI

Como criar sequence com o valor igual ao maior id de uma tabela no ORACLE

Algumas vezes podemos ter a necessidade de criar uma sequence no Oracle com um valor igual ao maior id de uma determinada tabela acrescido de 1. Para fazer isso é bem simples, bastando utilizar a a cláusula “START WITH” no momento da criação da sequence, seguido do valor que se deseja que a sequence seja iniciada. Porém nem sempre podemos colocar manualmente esse valor pois caso o script não seja executado no momento em que foi criado pode ser que o valor inserido manualmente não seja mais o maior id da tabela, então a solução para isso é utilizar um script PL/SQL para pegar o maior id da tabela em tempo de execução, como no exemplo abaixo.

1
2
3
4
5
6
7
8
9
BEGIN
   DECLARE
   seqval NUMBER;
   BEGIN
     SELECT max(id_da_tabela) INTO seqval FROM minha_tabela;
     execute immediate('CREATE SEQUENCE SEQ_tabela MINVALUE 1 START WITH ' || (seqval+1) || ' INCREMENT BY 1 NOCACHE NOORDER NOCYCLE');
   END;
END;
/

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *