Używam liquibase do zarządzania moim schematem. Mam kilka instrukcji wstawiania. Ciężko zakodowałem numery podstawowych identyfikatorów. Po zakończeniu wszystkich wstawień chcę zmienić wartość sekwencji na 1 więcej niż maksymalna wartość klucza podstawowego w tabeli. W tym celu napisałem PL/SQL jak podano poniżej. Jednak, kiedy wykonać select ArtifactTypes_id_seq.nextval from dual;
nadal zwiększa 0.Oracle: Ustawianie sekwencji do określonej wartości
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;
/
DBMS_OUTPUT daje następujące wyjścia - Executed "ALTER SEQUENCE saas.ArtifactTypes_id_seq INCREMENT BY 71"
Wszystko, co mam brakuje? Czy robię złą drogę? NOte: Próbowałem wykonywać te instrukcje SQL z SQLDeveloper.