sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo crear una secuencia de Oracle que comience con el valor máximo de una tabla?

Si puede usar PL/SQL, intente (EDITAR:incorpora la sugerencia xlnt de Neil para comenzar con el siguiente valor más alto):

SELECT 'CREATE SEQUENCE transaction_sequence MINVALUE 0 START WITH '||MAX(trans_seq_no)+1||' INCREMENT BY 1 CACHE 20'
  INTO v_sql
  FROM transaction_log;

EXECUTE IMMEDIATE v_sql;

Otro punto a considerar:al configurar el parámetro CACHE en 20, corre el riesgo de perder hasta 19 valores en su secuencia si la base de datos deja de funcionar. Los valores CACHE se pierden al reiniciar la base de datos. A menos que vayas a la secuencia con mucha frecuencia o que no te importen mucho los intervalos, lo configuraría en 1.

Una liendre final:los valores que especificó para CACHE e INCREMENT BY son los valores predeterminados. Puede omitirlos y obtener el mismo resultado.