51 lines
1.3 KiB
MySQL
51 lines
1.3 KiB
MySQL
|
|
-- =============================================================================
|
|||
|
|
-- 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;
|