Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Значит когда сегодня в очередной раз не поделили водителей в банке меня пнули и сказали что бы я написал софтинку с расписанием водил. Ничего сложного там небыло, несколько таблиц из которых два справочника ну и собственно таблица с расписанием. в общем работы было на пол часа. Но потом догбавили задание. т.е. смотрите вот расписание водилы № 1 (естественно только нужные столбцы) : дата |отправка |прибытие | 18.09.2007|8:00 |8:45 | 18.09.2007|9:30 |10:05 | 18.09.2007|11:00 |12:10 | 18.09.2007|13:00 |15:00 | 18.09.2007|18:00 |20:00 | ну вот расписание до момента икс. потом допустим звоню я и говорю что мне нужен водитель №1 с 14:00 до 14:30 она приспокойненько выбирает время и всё нужные данные жмёт Добавить и вот как сделать что бы ей нельзя было добавить запись ведь водитель катается в промежутке времени 18.09.2007|13:00 |15:00 | Т.е. отправка и прибытие новой записи не должно находится в промежутке времени уже существующих записией. кто нибудь с таким сталкивался? просто я не знаю как подойти к этому. заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 19:08 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Когда же тебя, moderated, забанят? Ты бы хоть читал то, что постишь по всем форумам, Митрофанушка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 19:31 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Прочитать здесь внимательно Ещё вопросы по запросу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 20:48 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
обычная проверка на непересекающиеся периоды, в триггере или чеконстрейнте проверяйте (new_date_begin between date_begin and date_end) or (new_date_end between date_begin and date_end). Индекс date_begin, date_end. Отделять дату и время в разные поля -- одно из самых дебильный решений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 08:42 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисОтделять дату и время в разные поля -- одно из самых дебильный решений. Ну не надо так жёстко - бывают варианты... :) Правда в данном случае - тоже лажа (имхо). Прикольно будет когда водила 23:00 уедет и в 01:30 вернётся... ну-да, ну-да варианты типа 18.09.2007|23:00|00:00 19.09.2007|00:00|01:30 А потом проблемы с подсчётом количества выездов, ну и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 11:20 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
АнатоЛой Журавлев ДенисОтделять дату и время в разные поля -- одно из самых дебильный решений. Ну не надо так жёстко - бывают варианты... :) ...Обожаю писать where (date > date_f) or (date=date_f and time >= time_f) или еще круче where year > year_f or year=year_f and month>month_f or year=year_f and month=month_f and day>=day_f .... Вместо одного предиката -- десять, из-за любителей положить год месяц день и время в отдельные поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 11:39 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис АнатоЛой Журавлев ДенисОтделять дату и время в разные поля -- одно из самых дебильный решений. Ну не надо так жёстко - бывают варианты... :) ...Обожаю писать where (date > date_f) or (date=date_f and time >= time_f) или еще круче where year > year_f or year=year_f and month>month_f or year=year_f and month=month_f and day>=day_f .... Вместо одного предиката -- десять, из-за любителей положить год месяц день и время в отдельные поля. Да я понимаю... Я не совсем про это. Я про то, что иногда бывает необходимость выделить время или дату из DATETIME в отдельное поле для создания индекса по нему ("в ущерб" нормальной форме)... Ну неудобно иногда часто использовать Код: plaintext 1. 2. Код: plaintext 1. 2. Почему? Выкладки - ниже: Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 12:23 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
АнатоЛой Код: plaintext 1. 2. Функциональный индекс можно попробовать DATE(dtm_test) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 12:50 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис Функциональный индекс можно попробовать DATE(dtm_test) Начиная с какой версии IDS?! :( :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 13:08 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
АнатоЛой Журавлев ДенисФункциональный индекс можно попробовать DATE(dtm_test) Начиная с какой версии IDS?! :( :)Любая 9-ка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 13:46 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#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. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 14:00 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
АнатоЛой Почему? Выкладки - ниже: 1) informix.tmp_dtm_test: SEQUENTIAL SCAN Filters: DATE (informix.tmp_dtm_test.dtm_test ) = TODAY .... 1) informix.tmp_dtm_test: INDEX PATH (1) Index Keys: dtm_test (Key-Only) (Serial, fragments: ALL) Lower Index Filter: informix.tmp_dtm_test.dtm_test >= datetime(2007-09-20 00:00:00) year to second Upper Index Filter: informix.tmp_dtm_test.dtm_test <= datetime(2007-09-20 23:59:59) year to second Ну и что тут особенного ? Что ты хотел показать ? В первом случае скан , возможно, используется только потому, что таблица маленькая и по индексу читать дороже. Или ты хочешь сказать, что индекс здесь вообще не будет использоваться ни при каких условиях ? Во втором случае используется Key-Only, но вряд ли в реальном запросе тебе кроме времени больше ничего не надо будет тащить из таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 15:09 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
vasilisИли ты хочешь сказать, что индекс здесь вообще не будет использоваться ни при каких условиях ? именно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 15:32 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис vasilisИли ты хочешь сказать, что индекс здесь вообще не будет использоваться ни при каких условиях ? именно так. Это баг или фича ? Если последнее, то где это написано или откуда известно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 15:39 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
vasilisЭто баг или фича ? Если последнее, то где это написано или откуда известно ?Это аксиома, для любых субд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 15:45 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
DATETIME далеко не у всех есть. Или это не связано с типом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 17:24 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
vasilisDATETIME далеко не у всех есть. Или это не связано с типом ? не связано. where interger_f - 1 = 0 -- индекс по полю interger_f использоваться не будет where interger_f = 0 + 1 -- индекс по полю interger_f использоваться будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 17:28 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис vasilisDATETIME далеко не у всех есть. Или это не связано с типом ? не связано. where interger_f - 1 = 0 -- индекс по полю interger_f использоваться не будет where interger_f = 0 + 1 -- индекс по полю interger_f использоваться будет Это то понятно. Мы просто говорили о разных вещах (по моей вине). Я только сейчас увидел в том примере WHERE DATE (dtm_test) = т.е. использование функции. Конечно же, стандартный индекс тут ни при чем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 18:07 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
vasilisЭто то понятно. Мы просто говорили о разных вещах (по моей вине). Я только сейчас увидел в том примере WHERE DATE (dtm_test) = т.е. использование функции. Конечно же, стандартный индекс тут ни при чем :)Ну слава богу, дошло. А я подумал что у тебя склероз уже начался :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 08:42 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис ..проверяйте (new_date_begin between date_begin and date_end) or (new_date_end between date_begin and date_end).. на мой взгляд забыли еще об одном условии, должно быть так (new_date_begin between date_begin and date_end) or (new_date_end between date_begin and date_end) or (date_begin between new_date_begin and new_date_end) or (date_end between new_date_begin and new_date_end) Если не прав - поправьте ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 12:08 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Gold_на мой взгляд забыли еще об одном условии, должно быть так (new_date_begin between date_begin and date_end) or (new_date_end between date_begin and date_end) or (date_begin between new_date_begin and new_date_end) or (date_end between new_date_begin and new_date_end) Если не прав - поправьте )Да, забыл. Предлагаю так: (new_date_begin between date_begin and date_end) or (new_date_end between date_begin and date_end) or (new_date_begin < date_begin and new_date_end > date_end) Тут еще правда надо думать о null и о том чтобы new_date_begin>new_date_end Т.е. я всегда предлагаю вместо null 01.01.0001 и 31.12.9999 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 12:29 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Понял, что скоро и мне надо будет это проверять, решил вернутся :) В этом предположении: Журавлев Денис Тут еще правда надо думать о null и о том чтобы new_date_begin>new_date_end Т.е. я всегда предлагаю вместо null 01.01.0001 и 31.12.9999 Журавлев ДенисДа, забыл. Предлагаю так: (new_date_begin between date_begin and date_end) or (new_date_end between date_begin and date_end) or (new_date_begin < date_begin and new_date_end > date_end) все таки видимо так: ((new_date_begin >= date_begin) and (new_date_begin < date_end)) or ((new_date_end > date_begin) and (new_date_end <=date_end) or ((date_begin >= new_date_begin) and (date_begin < new_date_end)) or ((date_end > new_date_begin) and (date_end <=new_date_end) начал путаться.. поправте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 18:53 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Gold_начал путаться.. поправтеСделайте контрольный пример, на нем будем проверять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 08:32 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис vasilisЭто то понятно. Мы просто говорили о разных вещах (по моей вине). Я только сейчас увидел в том примере WHERE DATE (dtm_test) = т.е. использование функции. Конечно же, стандартный индекс тут ни при чем :)Ну слава богу, дошло. А я подумал что у тебя склероз уже начался :) Склероз все равно начался :), но в данном случае он ни при чем, это была просто невнимательность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 20:11 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисСделайте контрольный пример, на нем будем проверять. Перед созданием примера, хотелось бы уточнить след: Многоверсионных СУБД (например IB) проверять, например на уникальность, мягко говоря, не рекомендуется. В Informix'e, видимо благодаря блокировке можно. Так ли это? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Как написать в чекконстраинте, например условие: (new_date_begin between date_begin and date_end) не знаю. В документации не нашел. Видимо плохо искал (. Подскажите как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 13:32 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Gold_Многоверсионных СУБД (например IB) проверять, например на уникальность, мягко говоря, не рекомендуется. В Informix'e, видимо благодаря блокировке можно. Так ли это?В версионниках надо отдельно извращаться, т.к. две одновременных транзакции не видят данных друг друга, то проверка просто не сработает, и в бд будут неконстистентные данные (пересекающиеся периоды). В блокировочнике попроще "опоздавшая" транзакция "зависнет" и проверит уже закомиченное. Gold_Как написать в чекконстраинте, например условие: (new_date_begin between date_begin and date_end) не знаю. В документации не нашел. Видимо плохо искал (. Подскажите как?Никак. Я когда ранее писал про check думал про вариант проверки самосоединением таблицы, но этот вариант во первых медленнее, во вторых информикс не позволяет делать селект из check констрейнта (я ошибочно думал что позволяет). Триггером надо проверять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 14:21 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис ..Триггером надо проверять. Еще вопросик: если записи в эту таблицу заносятся через процедуру. и я уверен, что будут заносится только с использованием этой процедуры, то корректна ли проверка будет в процедуре? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 14:46 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Gold_ Журавлев Денис ..Триггером надо проверять. Еще вопросик: если записи в эту таблицу заносятся через процедуру. и я уверен, что будут заносится только с использованием этой процедуры, то корректна ли проверка будет в процедуре? Если в процедуре сделать сначала insert/update, а потом проверить а не противоречат-ли другие записи, то наверно получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 16:22 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис Gold_ Журавлев Денис ..Триггером надо проверять. Еще вопросик: если записи в эту таблицу заносятся через процедуру. и я уверен, что будут заносится только с использованием этой процедуры, то корректна ли проверка будет в процедуре? Если в процедуре сделать сначала insert/update, а потом проверить а не противоречат-ли другие записи, то наверно получится. Ага... и если противоречит откатываю транзакцию. А если наоборот (как я хотел), то между проверкой и insert/update может быть другой insert/update Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 18:07 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Gold_Ага... и если противоречит откатываю транзакцию.Да. Gold_А если наоборот (как я хотел), то между проверкой и insert/update может быть другой insert/update Так?Именно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 08:32 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисДа, забыл. Предлагаю так: (new_date_begin between date_begin and date_end) or (new_date_end between date_begin and date_end) or (new_date_begin < date_begin and new_date_end > date_end) все таки видимо так: ((new_date_begin >= date_begin) and (new_date_begin < date_end)) or ((new_date_end > date_begin) and (new_date_end <=date_end) or ((date_begin >= new_date_begin) and (date_begin < new_date_end)) or ((date_end > new_date_begin) and (date_end <=new_date_end) начал путаться.. поправте Перемудрили. Для условия пересечения интервалоа достаточно написать так (учитывая, конечно, что NULL'ов нет и вместо них используются 01.01.0001 и 31.12.9999): new_date_begin <= date_end AND new_date_end >= date_begin Условие непересечения интервалов: new_date_begin > date_end OR new_date_end < date_begin ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 18:18 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
vkubr Для условия пересечения интервалоа достаточно написать так ( учитывая, конечно, что NULL'ов нет и вместо них используются 01.01.0001 и 31.12.9999 ): new_date_begin <= date_end AND new_date_end >= date_begin Условие непересечения интервалов: new_date_begin > date_end OR new_date_end < date_begin тогда недостаточно ограничения на входные параметры по отсутствию NULL необходимо ЕЩЁ одно ограничение на входные параметры: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 22:42 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
АнатоЛой сорри, конечно же new_date_begin <= new_date_end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 22:47 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
сорри, конечно же new_date_begin <= new_date_end П.С.: срочно спать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 22:48 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
АнатоЛой тогда недостаточно ограничения на входные параметры по отсутствию NULL необходимо ЕЩЁ одно ограничение на входные параметры: Код: plaintext Разумеется, это подразумевалось. Условие (beg <= end) реализуется отдельно через check constraint. Т.о. в условие пересечения/непересечения интервалов (реализуется через триггер) его можно не включать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2007, 10:10 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
vkubr[quot ] .... Перемудрили. Для условия пересечения интервалоа достаточно написать так (учитывая, конечно, что NULL'ов нет и вместо них используются 01.01.0001 и 31.12.9999): new_date_begin <= date_end AND new_date_end >= date_begin Условие непересечения интервалов: new_date_begin > date_end OR new_date_end < date_begin Переупростил ) Например, "новый интервал" вписывается между "старыми".. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 12:13 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Gold_ vkubr[quot ] .... Перемудрили. Для условия пересечения интервалов достаточно написать так (учитывая, конечно, что NULL'ов нет и вместо них используются 01.01.0001 и 31.12.9999): new_date_begin <= date_end AND new_date_end >= date_begin Условие непересечения интервалов: new_date_begin > date_end OR new_date_end < date_begin Переупростил ) Например, "новый интервал" вписывается между "старыми".. Что значит "новый интервал" вписывается между "старыми" ? Причем тут попарное непересечение интервалов? Может мы о разных вещах говорим? Указанные условия пересечения (непересечения) интервалов предназначены для использования в ситуации, когда есть таблица, реализующая т.н. "интервальную" историю и требуется обеспечить попарное непересечение интервалов. Предположим, что интервал задается парой колонок date_beg и date_end: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Теперь остается обеспечить, чтобы все интервалы попарно не пересекались. Для этого создаем INSERT/UPDATE-триггеры, в которых для вставляемой/редактируемой записи проверяем, что для вновь устанавливаемых значений new.date_beg и new.date_end в таблице не существует других интервалов, пересекающихся с устанавливаемым. То есть в триггере пытаемся найти пересекающийся интервал, и если таковой обнаруживается, то делаем EXCEPTION. Например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Аналогично - для UPDATE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 13:07 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
vkubrВы проверяйте что-ли то что пишете. С таким триггером вообще в таблицу ничего не вставить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. И вообще Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 14:18 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
А, это я даты наоборот поставил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 14:24 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис vkubrВы проверяйте что-ли то что пишете. С таким триггером вообще в таблицу ничего не вставить. А Вы попробуйте. Только с тем запросом, который в триггере, а не с тем, который в Вашем посте (у Вас совсем другое условие). Условие (SELECT COUNT(*) ... ) > 1 (а не " > 0 ", как можно было бы подумать) учитывает, что в выборку попадет и сам вставляемый интервал, т.к. интервал всегда пересекается с самим собой. Конечно, если делать реализацию не через триггер, а через процедуру, используемую вместо INSERT/UPDATE и выполняющую проверку до вставки/редактирования, то условие должно быть " > 0 "). Но делать через триггер -- надежнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 14:39 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
vkubr Вы правы. Спасибо. Я кроме прочих неточностей еще и предполагал, что например периоды 2007-10-10 12:00:00 - 2007-10-10 13:00:00 и 2007-10-10 13:00:00 - 2007-10-10 14:00:00 не пересекаются... Пользователю, так удобно видеть.. надо бы решить принципиально что у меня включено в период, а что исключено ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 15:07 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
Gold_ Я кроме прочих неточностей еще и предполагал, что например периоды 2007-10-10 12:00:00 - 2007-10-10 13:00:00 и 2007-10-10 13:00:00 - 2007-10-10 14:00:00 не пересекаются... Пользователю, так удобно видеть.. надо бы решить принципиально что у меня включено в период, а что исключено В этом случае нужно просто договориться, что правая граница интервала в него не входит и соответствующим образом скорректировать условия: в условии пересечения интервалов поменять нестрогие сравнения ( >= и <= ) на строгие ( > и < ), а в условии непересечения -- наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 15:27 |
|
||
|
Да же не знаю как к єтому подойти)))
|
|||
|---|---|---|---|
|
#18+
vkubr Условие (SELECT COUNT(*) ... ) > 1 (а не " > 0 ", как можно было бы подумать) учитывает, что в выборку попадет и сам вставляемый интервал, т.к. интервал всегда пересекается с самим собой.Да, уже сообразил. vkubrКонечно, если делать реализацию не через триггер, а через процедуру, используемую вместо INSERT/UPDATE и выполняющую проверку до вставки/редактирования, то условие должно быть " > 0 ").До вставки/редактирования как раз проверять нельзя, одновременно навставляют из разных транзакций. vkubrНо делать через триггер -- надежнее.Без разницы, если правильно все сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 15:38 |
|
||
|
|

start [/forum/topic.php?all=1&fid=44&tid=1608287]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 371ms |

| 0 / 0 |
