MySQL データベースをセットアップしようとしています。最終的なデータベースは、約で構成されます。7 つのテーブルに分散された 200 列。今、ほとんどの列にチェック制約を追加したいという問題があります。制約が 1 つしかない列もあれば、制約が多数ある列や、異なるテーブルの列の影響を受ける列もあります。
たとえば、年齢が 20 歳以上である場合、または郵便番号が 5 文字で構成され、1 で始まる場合、または入院日 (入院テーブル) が退院日 (退院テーブル) より前である場合にのみ、行をテーブルに追加できます。 . 例を3つだけ。あと 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 ;
それが私が問題を処理したくない方法です。
私の質問は、通常の人間が読める方法で制約を宣言し (たとえば、テキストファイルごとに適切な名前の制約を 1 つ)、これらをデータベースに追加する方法があるかどうかです。