次の表を検討してください。
CREATE TABLE `demo` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`from_val` BIGINT(20) DEFAULT NULL,
`to_val` BIGINT(20) DEFAULT NULL,
PRIMARY KEY (`id`)
);
同じテーブルに、from_val
または to_val
別のレコードのfrom_val
との間に 2 番目のレコードが存在しないようにする制約を作成することはできto_val
ますか? したがって、空のテーブルからの 2 番目のクエリは、制約エラーで失敗するはずです。
INSERT INTO `demo` (`from_val`, `to_val`) VALUES (1,10),(11,20);
INSERT INTO `demo` (`from_val`, `to_val`) VALUES (5,15);
途中でデータを検証する/更新するのは些細なことですが、MySQL がこれを RDBMS レベルで強制できるかどうかを知りたかっただけです。