-- ============================================================================= -- DC_DOCUMENT_PROGRESS_ALTER.sql -- Ergänzt dc_project_documents um status und progress für Dokument-Fortschritt. -- Idempotent: Fehler "Spalte existiert bereits" wird ignoriert. -- ============================================================================= BEGIN EXECUTE IMMEDIATE ' ALTER TABLE dc_project_documents ADD ( status VARCHAR2(20) DEFAULT ''PENDING'', progress NUMBER DEFAULT 0 ) '; DBMS_OUTPUT.PUT_LINE('Spalten status/progress angelegt.'); EXCEPTION WHEN OTHERS THEN IF SQLCODE = -1430 THEN DBMS_OUTPUT.PUT_LINE('Spalten existieren bereits – kein Änderungsbedarf.'); ELSE RAISE; END IF; END; / -- Bestehende Zeilen initialisieren UPDATE dc_project_documents SET status = 'PENDING', progress = 0 WHERE status IS NULL; COMMIT; -- Check-Constraint (idempotent) BEGIN EXECUTE IMMEDIATE ' ALTER TABLE dc_project_documents ADD CONSTRAINT dc_project_documents_status_ck CHECK (status IN (''PENDING'', ''IN_PROGRESS'', ''COMPLETED'', ''ERROR'')) '; EXCEPTION WHEN OTHERS THEN IF SQLCODE IN (-2264, -2261) THEN NULL; -- Constraint existiert bereits ELSE RAISE; END IF; END; / COMMIT; EXIT;