|
|
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
Я с Oracle/MySQL на "ВЫ", так что сильно не бейте по рукам)) Данная БД работает с 2004 года, при попытке открытия записей через клиента периодически появляется ошибка "Invalid time", все решалось простым удалением записей и новым их созданием, но потом пришел я на работу и захотел разобраться))) Нашел старый TOAD 8.5.3 - к которому имелась инструкция по подключению к БД. Полазив по таблицах на нашел ту самую в которой рождалась ошибка, только в TOAD она звучит как "0.0 is not a valid timestamp". Я решил установить в проблемном месте значение по умолчанию "SYSDATE", но оно все равно не вносится, если клиент ничего не установил. Как попробовать заставить таблицу принимать значение по умолчанию? При условии что нарушать работу БД нельзя, уволят к чертям и разбираться никто не будет)) P.S.: Клиент - exe-шник сделан в Delphi, что он собой представляет можно только догадываться, исходника нет)). Кто разработчик всего этого добра и кто внедрял в рабочий процесс - тоже не известно. P.Р.S.: Как такой запрос: Код: sql 1. 2. 3. реагирует на NULL? (Это один из вариантов решения озвученной проблемы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 15:00 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
to_date авторДанная БД работает с 2004 года, при попытке открытия записей через клиента периодически появляется ошибка "Invalid time", все решалось простым удалением записей и новым их созданием, ахринетъ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 15:28 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
semenar, Сделал вчера в таблице: Код: sql 1. - значением по умолчанию, но значения не вносятся. Наверное все-таки клиент записывает NULL, если пользователь ничего не ввёл. А так как автопарк состоит из Win XP (да-да, у нас таких много), 7, 8, 8.1, 10 -- х64/х86, то проблема будет появляться. Вчера разбирался с пользователем после которого появлялась озвученная ошибка - проблема от данного пользователя возникала потому что на его системе Win 7 х32, стояла BDE x64. Заменил на BDE х32 и пользователь пока что не ломает записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:04 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatraus Код: sql 1. NLS-мина. Используй trunc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:08 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatraus Код: sql 1. Жуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:08 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatrausпроблема от данного пользователя возникала потому что на его системе Win 7 х32, стояла BDE x64. Заменил на BDE х32 и пользователь пока что не ломает записи.Это не есть истинная причина проблемы, это всего лишь фактор, при котором она воспроизводится/не_воспроизводится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:12 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
слов нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:32 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
Q.Tarantinoслов нет. рекомендую...СЛОВАРЬ Сборник слов в алфавитном порядке, с пояснениями, толкованиями или с переводом на другой язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:38 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatrausP.Р.S.: Как такой запрос: Код: sql 1. 2. 3. реагирует на NULL? (Это один из вариантов решения озвученной проблемы) Плохо реагирует, не показывает их Хочешь искать с null Код: plsql 1. 2. 3. ну а дальше: - Найди хоть 1 запись с null. - Проверь из клиента что твоя ошибка воспроизводится для этой записи. - Замени поле WHO_DATE не на sysdate, a хотя-бы на Date_Modify для одной этой записи. - Проверь из клиента что твоя ошибка не воспроизводится для этой записи. - Напиши результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:56 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
MaximaXXL- Найди хоть 1 запись с null. - Проверь из клиента что твоя ошибка воспроизводится для этой записи. - Замени поле WHO_DATE не на sysdate, a хотя-бы на Date_Modify для одной этой записи. - Проверь из клиента что твоя ошибка не воспроизводится для этой записи. - Напиши результат Наверное я ввёл сообщество в заблуждение, извините. Если в записи NULL то всё нормально работает, но иногда, насколько я понял, вместо NULL записывается какое-то значение отличимое от NULL ("0" или еще что), хоть клиент позволяет сохранять только дату или ничего. MaximaXXLalbatrausP.Р.S.: Как такой запрос: Код: sql 1. 2. 3. реагирует на NULL? (Это один из вариантов решения озвученной проблемы) Плохо реагирует, не показывает их А это хорошо)), можно исправить всех "Инвалидов" (пользователи их так называют) за 2017 год, не внося изменения в работающие записи. Сейчас наверное вопрос стоит уже по другому: может ли клиент перезаписывать значение в таблице БД выставленное по умолчанию, если у него даже не активировалось соответственное поле (никакие данные не вносились и не удалялись)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:57 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatraus может ли клиент перезаписывать значение в таблице БД выставленное по умолчанию, если у него даже не активировалось соответственное поле (никакие данные не вносились и не удалялись )? Всё что явно или опосредствованно не запрещено - разрешено (как это ни банально); Что вы хотели сказать выделенным набором слов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:16 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
Viewer, Пользователь в клиентском приложении хочет выставляет дату, а хочет - нет. Обычно они (пользователи) в клиенте даже не ставят курсор в поле отвечающее за значение поля "WHO_DATE" в БД (извините за тавтологию). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:44 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatrausViewer, Пользователь в клиентском приложении хочет выставляет дату, а хочет - нет. Обычно они (пользователи) в клиенте даже не ставят курсор в поле отвечающее за значение поля "WHO_DATE" в БД (извините за тавтологию). У вас дата в дефаулте, она будет заполнена, если не пользователем. то ораклом. Код: plsql 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. Если дата в нулл, то и при update ничего не будет. Поищите по форуму как включить трассировку сессии, вы там увидите, что и куда вставляете. Это если у вас нет возможности посмотреть исходники клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 13:28 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
semenar, Данные из файла трассировки: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Запись в таблице удаляется (вдруг что-то такое существует), а потом перезаписывается данными из клиента, где и есть моя проблемная запись Who_Date. Поэтому всё зависит от пользователя и его машины: если пользователь не поставит дату -> клиент отправит NULL -> и в результате из неправильных настроек машины пользователя мы можем получить в таблице ошибку. Правильно я понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 13:10 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
[quot albatraus]semenar, Delete From CustomsAdmin.OFFICE_ORDERS Where DCUS_Code = 38 and Type_Card = 1 and Num_Card = 62 and Year_Card = 2017 [/src] Ну тут как бы удаление. Хотя пристрелите меня, не понимаю зачем delete+insert, когда нужно update. albatrausInsert Into CustomsAdmin.OFFICE_ORDERS (DCUS_Code, Num_Card, Year_Card, Who, Who_Date, For_Whom, For_Whom_Note, Order_Content, Order_Pos, UserN) Values (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10) [/src] Запись в таблице удаляется (вдруг что-то такое существует), а потом перезаписывается данными из клиента, где и есть моя проблемная запись Who_Date. Поэтому всё зависит от пользователя и его машины: если пользователь не поставит дату -> клиент отправит NULL -> и в результате из неправильных настроек машины пользователя мы можем получить в таблице ошибку. Правильно я понял? В вашем коде идет вставка, в том числе who_date. И есть переменная привязки. Явно null не прописан. Я канечно могу предложить решение данного гамнокодинга, а именно переименовать таблицу, сделать view, who_date varchar2. И думается весь гамногодинг заработает, особенно после delete+insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 20:12 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
semenarЯвно null не прописан. Я ничего явно прописанного в трассировке не увидел (может и не должен) Поэтому, исходя из изложенного, буду считать что Default у WHO_DATE перезаписывается NULL из клиента. Думаю та этом обсуждение можно заканчивать. semenar, Вы уж извините, но исправлять код я не стану... руки еще не доросли да и как оно в БД всё завязано я не знаю. semenar , MaximaXXL, AmKad - спасибо Вам за помощь и подсказки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 23:16 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatrausНаверное я ввёл сообщество в заблуждение, извините. Если в записи NULL то всё нормально работает, но иногда, насколько я понял, вместо NULL записывается какое-то значение отличимое от NULL ("0" или еще что), хоть клиент позволяет сохранять только дату или ничего. albatrausЗапись в таблице удаляется (вдруг что-то такое существует), а потом перезаписывается данными из клиента, где и есть моя проблемная запись Who_Date. Поэтому всё зависит от пользователя и его машины: если пользователь не поставит дату -> клиент отправит NULL -> и в результате из неправильных настроек машины пользователя мы можем получить в таблице ошибку. Правильно я понял? Вот сейчас я ничего не понял. Так Вы ловите null, 0 или черную кошку в черной комнате? т.е. Вы хотя-бы для себя очертили проблемму: 1. Вас null в поле устраивает или нет? 2. Проблемма возникает когда в поле Who_Date - что? 3. Можно ли воспроизвезти эту ошибку на тестовом/боевом сервере? 4. Есть ли понимание проблеммы вообще, или пока только из разряда мне рассказывали что приходилось удалять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 23:19 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
MaximaXXL1. Вас null в поле устраивает или нет? Да, устраивает. MaximaXXL2. Проблемма возникает когда в поле Who_Date - что? При просмотре через TOAD данного поля, он уходит в циклическую ошибку и я ничего не могу увидеть. Запросом я вижу что там: 12.01.0201, 00.10.0951, 21.07.5201... MaximaXXL3. Можно ли воспроизвезти эту ошибку на тестовом/боевом сервере? Через клиента, я не могу. (Сейчас я считаю что проблема возникает из-за неправильных настроек пользователя) MaximaXXL4. Есть ли понимание проблеммы вообще, или пока только из разряда мне рассказывали что приходилось удалять? Для меня это "что-то-где-то" albatrausЯ с Oracle/MySQL на "ВЫ", так что сильно не бейте по рукам)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 09:36 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatrausСейчас я считаю что проблема возникает из-за неправильных настроек пользователя Пришлось пересмотреть это мнение так как ошибки появляются и спонтанно - «Раз, два… Меркурий во втором доме… луна ушла… шесть – несчастье… вечер - семь», - Воланд. Сейчас решил сделать триггер: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но мне здесь не нравится sysdate + 30 поскольку я не знаю как оно поведет себя 2 декабря. Когда я вставляю вместо sysdate + 30 это trunc(to_date(sysdate + interval '1' year),'YEAR') (лучше бы получить 31.12.текущего года), то я получаю ошибку PLS-00201: identifier 'NUMTOYMINTERVAL' must be declared Подскажите как исправить ошибку или как по другому подойти к этому решению? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 10:38 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatrausto_date(sysdate AmKadNLS-мина. Используй trunc Ты когда на электронные часы смотришь, тоже выписываешь время прописью буквами на бумажку, а потом (возможно воспринимая как буквы другого языка) переводишь в цифры? Не надо приводить тип данных к самому себе через неявное преобразование. И сравнение со строкой '01.01.2005' точно такое же неявное преобразование без гарантии результата. Приведи всё к одному типу. Строки - через to_date с явной маской или литеральную запись. Если у тебя в БД реально есть даты вида 00.01.1951 - это говорит о кривом заполнении поля. DEFAULT тебя не спасёт хотя бы потому, что по трассировке значение передаётся явно. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И вопрос "на добивание", а в каком типе данных передаёт приложение? Там не чиселка случаем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 11:02 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatraus Код: plsql 1. nls-быдлокод продолжается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 11:03 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
envНе надо приводить тип данных к самому себе через неявное преобразование. Так лучше будет: trunc((sysdate + interval '1' year),'YEAR')? envИ сравнение со строкой '01.01.2005' точно такое же неявное преобразование без гарантии результата. Приведи всё к одному типу. Строки - через to_date с явной маской или литеральную запись. to_date('01.01.2005','dd.mm.yyyy') envИ вопрос "на добивание", а в каком типе данных передаёт приложение? Там не чиселка случаем? Не знаю. Исходника нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 12:11 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
albatrausНо мне здесь не нравится sysdate + 30 поскольку я не знаю как оно поведет себя 2 декабря. поведёт себя согласно правилам арифметики для дат.. trunc(last_day(sysdate)) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 12:26 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
envЕсли у тебя в БД реально есть даты вида 00.01.1951 - это говорит о кривом заполнении поля. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Потому и хочу триггер, но не знаю что делать с вот этим: albatraustrunc((sysdate + interval '1' year),'YEAR'), то я получаю ошибку PLS-00201: identifier 'NUMTOYMINTERVAL' must be declared Что я должен объявить(задекларировать)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 12:32 |
|
||
|
Изменение значения в таблице по умолчанию через TOAD
|
|||
|---|---|---|---|
|
#18+
Viewerповедёт себя согласно правилам арифметики для дат.. trunc(last_day(sysdate)) ? Это понятно, не повалятся ли ошибки, вот этого я не знаю. Viewer trunc(last_day(sysdate)) ? А как насчет последнего дня года, а не месяца? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 12:36 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39493793&tid=1885439]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
164ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 533ms |

| 0 / 0 |
