Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Пересекающиеся периоды записей / 9 сообщений из 9, страница 1 из 1
16.02.2021, 08:12
    #40045644
dn33369
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересекающиеся периоды записей
В таблице 4 поля
N1 N2 DATE_START DATE_END
Нужна проверка на пересекающиеся периоды
Например, вставляю
1 1 07.02.2021 01.01.2025
Далее вставляю 2 2 04.02.2021 01.01.2025
В таблице получится :
1 1 07.02.2021 01.01.2025
2 2 04.02.2021 06.02.2021
Т е запись закрывается с -1 и в таблице может быть только одна запись с 01.01.2025
Дальше если я вставляю 3 3 05.02.2021 , запись уже вписывается в период второй записи и вывести это как ERROR_TEXT( что ошибка пересекающихся периодов)
...
Рейтинг: 0 / 0
16.02.2021, 12:29
    #40045715
Валерий Юринский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересекающиеся периоды записей
Раз нужна проверка, проверяйте.
Можно делать её, например, в триггере AFTER INSERT.
В чём проблема?

P.S. при оформлении кода и примеров данных используйте, пожалуйста, тэг FIXED или SRC.
...
Рейтинг: 0 / 0
16.02.2021, 12:46
    #40045724
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересекающиеся периоды записей
Валерий Юринский

В чём проблема?

в триггере не видно незакомиченные записи

нужно блокировать ресурс

.....
stax
...
Рейтинг: 0 / 0
16.02.2021, 12:52
    #40045732
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересекающиеся периоды записей
dn33369
В таблице 4 поля
N1 N2 DATE_START DATE_END
Нужна проверка на пересекающиеся периоды
Например, вставляю
1 1 07.02.2021 01.01.2025
Далее вставляю 2 2 04.02.2021 01.01.2025
В таблице получится :
1 1 07.02.2021 01.01.2025
2 2 04.02.2021 06.02.2021
Т е запись закрывается с -1 и в таблице может быть только одна запись с 01.01.2025
Дальше если я вставляю 3 3 05.02.2021 , запись уже вписывается в период второй записи и вывести это как ERROR_TEXT( что ошибка пересекающихся периодов)


1 и 2 пересекаются (2 вхотит в 1), что значит запись закрывается с -1?

" я вставляю 3 3 05.02.2021" DATE_END?

.....
stax
...
Рейтинг: 0 / 0
16.02.2021, 12:57
    #40045735
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересекающиеся периоды записей
Валерий Юринский
Можно делать её, например, в триггере AFTER INSERT.
В чём проблема?
В том, что маркетологам не следует лезть с советами туда, где они мало смыслят.
...
Рейтинг: 0 / 0
16.02.2021, 14:31
    #40045787
Валерий Юринский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересекающиеся периоды записей
Stax
Валерий Юринский

В чём проблема?

в триггере не видно незакомиченные записи

нужно блокировать ресурс

.....
stax
Незакоммиченные записи не видны в другой сессии.

В своей сессии все видно в триггере AFTER INSERT OR UDATE уровня Statement.
...
Рейтинг: 0 / 0
16.02.2021, 14:32
    #40045788
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересекающиеся периоды записей
dn33369,

Выносите логику в пакеты и не давайте никому прямого доступа к таблице.
...
Рейтинг: 0 / 0
17.02.2021, 16:32
    #40046330
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересекающиеся периоды записей
1. Создаем таблицу MAP(DT DATE PRIMARY KEY)
2. Создает триггер на нашу таблицу где
a) WHEN INSERTING делаем INSERT INTO MAP SELECT :NEW.START_DT + LEVEL - 1 FROM DUAL CONNECT BY :NEW.START_DT + LEVEL - 1 <= :NEW.END_DT
b) WHEN DELETING делаем DELETE MAP WHERE DT BETWEEN :OLD.START_DT AND :OLD.NEW_DT
c) WHEN UPDATING делаем b) затем a).

SY.
P.S. Подразумевается все даты на начало дня.
...
Рейтинг: 0 / 0
18.02.2021, 08:28
    #40046515
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересекающиеся периоды записей
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Пересекающиеся периоды записей / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]