--DROP TABLE mail_subscriptions PURGE; --DROP TABLE mail_schedules PURGE; CREATE TABLE mail_schedules ( app_id NUMBER(4) CONSTRAINT nn_mail_schedules_app_id NOT NULL, schedule_id VARCHAR2(30) CONSTRAINT nn_mail_schedules_schedule_id NOT NULL, schedule_group VARCHAR2(64), description_ VARCHAR2(256), -- schedule_month VARCHAR2(128), schedule_day VARCHAR2(128), schedule_weekday VARCHAR2(128), schedule_hour VARCHAR2(128), schedule_minute VARCHAR2(128), schedule_interval VARCHAR2(128), -- updated_by VARCHAR2(30), updated_at DATE, -- CONSTRAINT pk_mail_schedules PRIMARY KEY (app_id, schedule_id), -- CONSTRAINT ch_mail_schedules_month CHECK (REGEXP_LIKE(schedule_month, '^(\d+,?\s*)|(\d+[-]\d+,?\s*)+|([A-Z]{3}\s*)+|([A-Z]{3}[-,][A-Z]{3},?\s*)+$') OR schedule_month IS NULL), -- CONSTRAINT ch_mail_schedules_day CHECK (REGEXP_LIKE(schedule_day, '^(\d+,?\s*)|(\d+[-]\d+,?\s*)+$') OR schedule_day IS NULL), -- CONSTRAINT ch_mail_schedules_weekday CHECK (REGEXP_LIKE(schedule_weekday, '^(\d+,?\s*)|(\d+[-]\d+,?\s*)+|([A-Z]{3},?\s*)+|([A-Z]{3}[-][A-Z]{3},?\s*)+$') OR schedule_weekday IS NULL), -- CONSTRAINT ch_mail_schedules_hour CHECK (REGEXP_LIKE(schedule_hour, '^(\d+,?\s*)+|(\d+[-]\d,?\s*)+$') OR schedule_hour IS NULL), -- CONSTRAINT ch_mail_schedules_minute CHECK (REGEXP_LIKE(schedule_minute, '^(\d+,?\s*)+$') OR schedule_minute IS NULL), -- CONSTRAINT ch_mail_schedules_interval CHECK (REGEXP_LIKE(schedule_interval, '^(\d+)$') OR schedule_interval IS NULL), -- CONSTRAINT ch_mail_schedules_min_or_int CHECK ((schedule_minute IS NULL AND schedule_interval IS NOT NULL) OR (schedule_minute IS NOT NULL AND schedule_interval IS NULL)) ); -- COMMENT ON TABLE mail_schedules IS '[CORE] mail_schedules...'; -- COMMENT ON COLUMN mail_schedules.app_id IS 'APEX application ID'; COMMENT ON COLUMN mail_schedules.schedule_id IS 'Schedule id'; COMMENT ON COLUMN mail_schedules.schedule_group IS 'Group for better visibility'; COMMENT ON COLUMN mail_schedules.description_ IS 'Description'; COMMENT ON COLUMN mail_schedules.schedule_month IS 'Send at specific month, 1..12 for months, separate values with comma'; COMMENT ON COLUMN mail_schedules.schedule_weekday IS 'Send at specific day in a week, 1..7 (MON..SUN), 1-5 possible'; COMMENT ON COLUMN mail_schedules.schedule_day IS 'Send at specific day of the month, 1..31'; COMMENT ON COLUMN mail_schedules.schedule_hour IS 'Send at specific hour, 00..23, 8-17 is possible'; COMMENT ON COLUMN mail_schedules.schedule_minute IS 'Send at specific minute in an hour, 00..59'; COMMENT ON COLUMN mail_schedules.schedule_interval IS 'Send every 1..30 minutes, schedule_minute is ignored';