-- Verhindert campaign_recipients-Zeilen ohne list_id UND segment_id
-- NOT VALID: läuft ohne Table-Lock, bestehende Zeilen beim nächsten VALIDATE CONSTRAINT prüfen

ALTER TABLE campaign_recipients
  DROP CONSTRAINT IF EXISTS recipient_has_one;

ALTER TABLE campaign_recipients
  ADD CONSTRAINT recipient_has_one CHECK (
    (list_id IS NOT NULL AND segment_id IS NULL)
    OR
    (segment_id IS NOT NULL AND list_id IS NULL)
  ) NOT VALID;
