-- Idempotent: erneute Bereinigung der source-CHECK, falls 048 zuvor nicht griff oder nur teilweise lief. DO $$ DECLARE r RECORD; BEGIN FOR r IN SELECT c.conname FROM pg_constraint c JOIN pg_class t ON c.conrelid = t.oid WHERE t.relname = 'vitals_baseline' AND c.contype = 'c' AND pg_get_constraintdef(c.oid) ILIKE '%source%' AND pg_get_constraintdef(c.oid) ILIKE '%IN %' LOOP EXECUTE format('ALTER TABLE vitals_baseline DROP CONSTRAINT %I', r.conname); END LOOP; END $$; ALTER TABLE vitals_baseline ADD CONSTRAINT vitals_baseline_source_check CHECK (source IN ('manual', 'apple_health', 'garmin', 'withings', 'csv'));