Это должно работать (при условии, что таблица называется ranges
, а новые параметры диапазона - @low и @high соответственно):
IF(NOT EXISTS (SELECT *
FROM ranges
WHERE @low BETWEEN minimum AND maximum)
AND
NOT EXISTS (SELECT *
FROM ranges
WHERE @high BETWEEN minimum AND maximum))
BEGIN
INSERT INTO ranges
(minumum, maximum)
VALUES
(@low, @high)
END
Конечно, это может быть дополнительно объединено / сжато:
IF(NOT EXISTS (SELECT *
FROM ranges
WHERE @low BETWEEN minimum AND maximum
OR @high BETWEEN minimum AND maximum))
BEGIN
INSERT INTO ranges
(minumum, maximum)
VALUES
(@low, @high)
END
И даже дальше:
INSERT INTO ranges
(minimum, maximum)
SELECT T.minimum, T.maximum
FROM (SELECT @low as minimum, @high as maximum) T
WHERE NOT EXISTS (SELECT *
FROM ranges
WHERE @low BETWEEN minimum AND maximum
OR @high BETWEEN minimum AND maximum)