Sto utilizzando liquibase per gestire il mio schema. Ho un sacco di istruzioni per l'inserimento. Ho hard codificato i numeri di identificazione principale. Dopo aver eseguito tutti i miei inserimenti, voglio cambiare il valore della sequenza a 1 più del valore massimo della chiave primaria nella tabella. Per questo ho scritto un PL/SQL come indicato di seguito. Tuttavia, quando eseguo select ArtifactTypes_id_seq.nextval from dual;
incrementa ancora 0.Oracle: impostazione della sequenza su un valore specifico
SET SERVEROUTPUT ON SIZE 1000000
DECLARE
sequence_id NUMBER;
BEGIN
SELECT NVL(MAX(idArtifactType), 0) + 1 INTO sequence_id FROM ArtifactTypes;
EXECUTE IMMEDIATE 'ALTER SEQUENCE saas.ArtifactTypes_id_seq INCREMENT BY ' || sequence_id;
EXECUTE IMMEDIATE 'SELECT ArtifactTypes_id_seq.nextval FROM dual';
EXECUTE IMMEDIATE 'ALTER SEQUENCE saas.ArtifactTypes_id_seq INCREMENT BY 1';
DBMS_OUTPUT.put_line('Executed "ALTER SEQUENCE saas.ArtifactTypes_id_seq INCREMENT BY ' || sequence_id || '"');
END;
/
Il DBMS_OUTPUT dà seguente output - Executed "ALTER SEQUENCE saas.ArtifactTypes_id_seq INCREMENT BY 71"
Tutto ciò che mi manca fuori? Sto facendo nel modo sbagliato? NOte: ho provato a eseguire questi SQL da SQLDeveloper.