Mysqli独特的2列范围

时间:2017-06-05 12:37:33

标签: mysql

在过去的几天里,我一直在寻找如何使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/201718/06/2017-26/06/2017

28/06/2017 - 03/07/201712/06/2017-19/06/2017有效。

我认为你明白了,但我可以根据需要详细说明。

我显然知道如何制作独特的多列但不知道这些列的范围。这是我正在努力的部分。

非常感谢任何帮助。

1 个答案:

答案 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