Tôi đang sử dụng liquibase để quản lý giản đồ của mình. Tôi có một loạt các câu lệnh chèn. Tôi đã mã hóa cứng các số id chính. Sau khi tất cả các chèn của tôi được thực hiện, tôi muốn thay đổi giá trị chuỗi thành 1 nhiều hơn giá trị tối đa của khóa chính trong bảng. Đối với điều này tôi đã viết một PL/SQL như được đưa ra dưới đây. Tuy nhiên, khi tôi thực hiện select ArtifactTypes_id_seq.nextval from dual;
nó vẫn increments 0.Oracle: Đặt chuỗi theo giá trị cụ thể
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;
/
Các DBMS_OUTPUT cho sau đầu ra - Executed "ALTER SEQUENCE saas.ArtifactTypes_id_seq INCREMENT BY 71"
Bất cứ điều gì mà tôi đang bỏ lỡ? Tôi đang làm sai cách? NOte: Tôi đã thử thực hiện các SQL này từ SQLDeveloper.