我正在尝试建立一个 MySQL 数据库。最终的数据库将包括大约。200 列分布在 7 个表中。现在我遇到了一个问题,我想为大多数列添加检查约束。一些列将只有一个约束,其他列将有许多和/或受不同表的列的影响。
例如,如果年龄超过 20 岁,或者如果邮政编码由 5 个字符组成并以 1 开头,或者如果入院日期(表格入院)早于出院日期(表格出院),则只能将行添加到表格中. 举三个例子。我能想出1000多个,这是我的问题。
我想以更结构化的方式添加这些约束。具有超过 10 个约束的触发器将很复杂,除了作者之外没有人能够重建所有约束。但是,如果数据库将使用多年,许多管理员将不得不使用数据库,并且可能会添加新的或删除不必要的约束。
DELIMITER $$
CREATE TRIGGER `test``_before_insert` BEFORE INSERT ON `zip`
FOR EACH ROW
BEGIN
IF NEW.zip_id < 5 THEN
SIGNAL SQLSTATE '12345'
SET MESSAGE_TEXT = 'check constraint 1';
END IF;
IF NEW.zip_id = 5 THEN
SIGNAL SQLSTATE '12345'
SET MESSAGE_TEXT = 'check constraint 2';
END IF;
END $$
DELIMITER ;
这就是我不想处理问题的方式。
我的问题是,是否有一种方法可以以普通人类可读的方式声明约束(例如,每个文本文件都有一个好名称的约束)并将它们添加到数据库中。