У меня есть незаконченная идея:
CREATE PROCEDURE check_constraint (table VARCHAR,field VARCHAR,condition VARCHAR)
BEGIN
SET @update_trigger = CONCAT ("
IF EXIST TRIGGER check_constraint_",table,"_",field,"
BEGIN /*I don't know yet what to do*/ END
ELSE /*IF TRIGGER DONT EXIST*/
BEGIN
CREATE TRIGGER check_constraint_",table,"_",field,"
BEFORE UPDATE ON ",table," FOR EACH ROW SET
NEW.",field,"=IF("condition, ", OLD.",field,",NEW.",field,");
END
");
PREPARE update_trigger FROM @update_trigger;
EXECUTE update_trigger;
DEALLOCATE PREPARE update_trigger;
SET @insert_trigger = ..............................
END
После того, как у нас есть законченная функция, мы можем просто вызвать ее при создании базы данных:
CALL check_constraint("table","field","NEW.field<34567");