BEGDA-ENDDA не перекрывались для PERNR

Автор Skif, Липень 04, 2017, 12:00:51 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Skif

Привет,
Чисто программистская задачка. Наверняка сто раз решена - где-то - Ткните пальцем, плз :)
Не дать сохранить дублирующую PERNR запись с перекрывающимся интервалом. В смысле, т.к. они ключевые, то конечно матюкнётся на update. Но хотелось бы проверить до сохранения, выдать сообщение об ошибке с требованием проверить интервалы.

Uukrul

Цитата: Skif від Липень 04, 2017, 12:00:51 ПП
хотелось бы проверить до сохранения, выдать сообщение об ошибке с требованием проверить интервалы.
Сделать переменную типа RANGES в нее загнать интервалы? которые существуют (sign = I, option = BT, low = <начало>, high = <конец>), а дальше новый интервал проверить вхождение начала интервала и конца в этот RANGES если начало или конец входят в проверку то значит есть пересечение, т.е. типа if BEGDA-ENDDA in RANGES. <значит дата входит в один из диапазонов>. elseif BEGDA-BGNDA in RANGES. <дата входит в пересечение диапазона>. else. <все в порядке пересечения нет>.

ysichov

Добрый день! Подсмотрел алгоритм у самого SAP  когда-то :)

... where begda <= p_end
        and endda >= p_beg.

где p_beg , p_end - период нашей новой записи.



Uukrul

Цитата: ysichov від Липень 07, 2017, 10:58:38 ДП
Добрый день! Подсмотрел алгоритм у самого SAP  когда-то :)
Юра, там условие, было следующее. Так что твой вариант мимо кассы получается, базу то трогать не хотят лишними нагрузками.
Цитата
Но хотелось бы проверить до сохранения, выдать сообщение об ошибке

ysichov

Олег, в варианте с RANGE используется  SELECT к таблице? или вся таблица загружена во внутреннюю память?


Uukrul

Цитата: ysichov від Липень 07, 2017, 01:16:27 ПП
Олег, в варианте с RANGE используется  SELECT к таблице? или вся таблица загружена во внутреннюю память?
Так я так понял данные по существующим интервалам у него уже где-то есть в переменных., так что RANGE просто используется для проверки без запроса к базе, хотя если конечно там HANA, то как бы все равно  8)

SMF spam blocked by CleanTalk