--- /dev/null
+BEGIN;
+
+-- SELECT evergreen.upgrade_deps_block_check('TODO', :eg_version);
+
+ALTER TABLE action_trigger.event_definition
+ DROP CONSTRAINT IF EXISTS "event_definition_validator_fkey";
+DROP TRIGGER IF EXISTS valid_at_validator ON action_trigger.event_definition;
+
+CREATE OR REPLACE FUNCTION action_trigger.validator_is_valid() RETURNS TRIGGER AS $FUNK$
+DECLARE
+ validator_mod TEXT;
+BEGIN
+
+ /* Validators are a comma-separated list of module names */
+
+ FOR validator_mod IN SELECT REGEXP_SPLIT_TO_TABLE(NEW.validator, ',') LOOP
+ PERFORM * FROM action_trigger.validator WHERE module = validator_mod;
+ IF NOT FOUND THEN
+ RAISE EXCEPTION '% is not a valid validator', validator_mod;
+ END IF;
+ END LOOP;
+
+ RETURN NULL;
+END;
+$FUNK$ LANGUAGE PLPGSQL STABLE;
+
+CREATE CONSTRAINT TRIGGER valid_at_validator
+ AFTER INSERT OR UPDATE ON action_trigger.event_definition
+ DEFERRABLE INITIALLY DEFERRED FOR EACH ROW
+ EXECUTE PROCEDURE action_trigger.validator_is_valid();
+
+COMMIT;
+