|
|
|
Анализ 8 дат. Как обойтись без курсора?
|
|||
|---|---|---|---|
|
#18+
Добрый день всем! Есть таблица с рядами дат, обозначающих отключение оборудования, начала ремонта, конца ремонта и подключения в работу, ну и в столбце i - номер агрегата. Примерно в таком духе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Плюс к тому ремонты могут быть как с отключением, так и без оного, т.е. в строке дат откл.и подкл. может не быть (NULL) Задача: проверить при Ins, Upd, Del на логическую достоверность, т.е. чтоб дата О (если она есть) не превышала предыдущую дату P, дата Р - последующую дату О, то же с началом и концами ремонтов (это кроме проверки по строке). Я сейчас в триггере закидываю нужный кусок в курсор и поехал проверять на NULL и сравнивать переменные. Такое нагромождение получается, глаза бы не глядели... Может придёт на ум опытным людям элегантное решение? Спасибо. PS Только не пинайте мокрым валенком. Я не пижон, я только учусь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 12:59:27 |
|
||
|
Анализ 8 дат. Как обойтись без курсора?
|
|||
|---|---|---|---|
|
#18+
При Delete, наверное ничего проверять не нужно. Проверки в строке, скорее всего у Вас написаны правильно, а самую-самую последнюю дату подключения/конца ремонта можно получить так (подразумевается, что i все-таки заносится правильно) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2002, 00:11:58 |
|
||
|
Анализ 8 дат. Как обойтись без курсора?
|
|||
|---|---|---|---|
|
#18+
>Cat2 Да, на DEL проверка, в самом деле не нужна, пардон за неточность. Реакция на DEL мне нужна для других целей. Похоже, что без последовательного прохождения курсора не обойтись... И-э-э-э-ххх... пропадай моя телега, все четыре колеса! Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2002, 06:19:22 |
|
||
|
Анализ 8 дат. Как обойтись без курсора?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Это для проверки по o и p. Аналогично для n и k. Обе проверки можно объединить в один SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2002, 08:24:58 |
|
||
|
Анализ 8 дат. Как обойтись без курсора?
|
|||
|---|---|---|---|
|
#18+
Может я чего-то не понял, но по моему можно проще. В общем-то это же обычная задача на проверку пересечения диапазонов. А пересекаться они могут если начало одного из диапазонов входит в другой. Для простоты допустим мы проверяем только начало(n) и конец(k) ремонта. Тогда триггер будет примерно таким: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Ну и надо еще учесть null как это сделано у Philippe: null заменяется на заведомо маленькое или заведомо большое число. Я это специально не стал писать что бы было понятней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2002, 10:07:28 |
|
||
|
Анализ 8 дат. Как обойтись без курсора?
|
|||
|---|---|---|---|
|
#18+
>Philippe Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2002, 10:13:35 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32042684&tid=1821190]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
20ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 335ms |

| 0 / 0 |
