|
Пересекающиеся периоды записей
|
|||
---|---|---|---|
#18+
В таблице 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( что ошибка пересекающихся периодов) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 08:12 |
|
Пересекающиеся периоды записей
|
|||
---|---|---|---|
#18+
Раз нужна проверка, проверяйте. Можно делать её, например, в триггере AFTER INSERT. В чём проблема? P.S. при оформлении кода и примеров данных используйте, пожалуйста, тэг FIXED или SRC. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 12:29 |
|
Пересекающиеся периоды записей
|
|||
---|---|---|---|
#18+
Валерий Юринский В чём проблема? в триггере не видно незакомиченные записи нужно блокировать ресурс ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 12:46 |
|
Пересекающиеся периоды записей
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 12:52 |
|
Пересекающиеся периоды записей
|
|||
---|---|---|---|
#18+
Валерий Юринский Можно делать её, например, в триггере AFTER INSERT. В чём проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 12:57 |
|
Пересекающиеся периоды записей
|
|||
---|---|---|---|
#18+
Stax Валерий Юринский В чём проблема? в триггере не видно незакомиченные записи нужно блокировать ресурс ..... stax В своей сессии все видно в триггере AFTER INSERT OR UDATE уровня Statement. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 14:31 |
|
Пересекающиеся периоды записей
|
|||
---|---|---|---|
#18+
dn33369, Выносите логику в пакеты и не давайте никому прямого доступа к таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 14:32 |
|
Пересекающиеся периоды записей
|
|||
---|---|---|---|
#18+
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. Подразумевается все даты на начало дня. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2021, 16:32 |
|
Пересекающиеся периоды записей
|
|||
---|---|---|---|
#18+
dn33369, STFF https://www.sql.ru/forum/actualsearch.aspx?search=???????????????? ?????????&sin=0&bid=3&a=&ma=0&dt=-1&s=1&so=1 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 08:28 |
|
|
start [/forum/topic.php?fid=52&fpage=25&tid=1880428]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 131ms |
0 / 0 |