在过去的几天里,我一直在寻找如何使mysqli中的2列范围独一无二。例如,column1的值为2,column2的值为6.如果用户尝试在任何列3,4,5中输入另一行,则必须返回错误。我可以在php中检查所有行,但是当记录太多时会降低性能。
对于我的情节,我有一个From数据(存储在unix时间戳中)和Till数据(再次存储在unix时间戳中)。
以示例为例
1497913200(20/06/2017)
和1498518000(27/06/2017)
这两个日期之间的任何内容都必须无效,
例如22/06/2017-29/06/2017
或18/06/2017-26/06/2017
28/06/2017 - 03/07/2017
或12/06/2017-19/06/2017
有效。
我认为你明白了,但我可以根据需要详细说明。
我显然知道如何制作独特的多列但不知道这些列的范围。这是我正在努力的部分。
非常感谢任何帮助。
答案 0 :(得分:0)
我认为您需要编写TRIGGER
来执行此检查,例如:
CREATE TRIGGER date_check_trigger BEFORE INSERT ON `table` FOR EACH ROW
BEGIN
SET @EXISTING_RECORD_COUNT = (SELECT COUNT(*) FROM `table` WHERE NEW.date BETWEEN start_date AND end_date)
IF (@EXISTING_RECORD_COUNT > 0) THEN
SIGNAL SQLSTATE '45000' set message_text='Invalid date, a range already exists';
END IF;
END