-- =============================================================================
-- DC_PROJECTS_NOTIFY_ALTER.sql
-- Ergänzt dc_projects um drei Berichtstyp-Flags für die E-Mail-Benachrichtigung.
-- Idempotent: bereits vorhandene Spalten werden ignoriert.
-- =============================================================================

BEGIN
  EXECUTE IMMEDIATE '
    ALTER TABLE dc_projects ADD (
      notify_ok         CHAR(1) DEFAULT ''Y'' NOT NULL,
      notify_hinweis    CHAR(1) DEFAULT ''Y'' NOT NULL,
      notify_abweichend CHAR(1) DEFAULT ''Y'' NOT NULL
    )
  ';
  DBMS_OUTPUT.PUT_LINE('Spalten notify_ok/notify_hinweis/notify_abweichend angelegt.');
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE = -1430 THEN
      DBMS_OUTPUT.PUT_LINE('Spalten existieren bereits – kein Änderungsbedarf.');
    ELSE
      RAISE;
    END IF;
END;
/

-- Check-Constraints (idempotent)
BEGIN
  EXECUTE IMMEDIATE '
    ALTER TABLE dc_projects
    ADD CONSTRAINT dc_projects_notify_ok_ck
    CHECK (notify_ok IN (''Y'',''N''))
  ';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE IN (-2264, -2261) THEN NULL;
    ELSE RAISE;
    END IF;
END;
/

BEGIN
  EXECUTE IMMEDIATE '
    ALTER TABLE dc_projects
    ADD CONSTRAINT dc_projects_notify_hinweis_ck
    CHECK (notify_hinweis IN (''Y'',''N''))
  ';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE IN (-2264, -2261) THEN NULL;
    ELSE RAISE;
    END IF;
END;
/

BEGIN
  EXECUTE IMMEDIATE '
    ALTER TABLE dc_projects
    ADD CONSTRAINT dc_projects_notify_abweichend_ck
    CHECK (notify_abweichend IN (''Y'',''N''))
  ';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE IN (-2264, -2261) THEN NULL;
    ELSE RAISE;
    END IF;
END;
/

COMMIT;

EXIT;