Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
При добавлении триггера не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, у меня такой вопрос: есть БД приблизительно на 800 таблиц, на сервере Adaptive Server Enterprise/12.5.0.3/EBF 11449 ESD#4/P/NT (IX86)/OS 4.0/rel12503/1939/32-bit/OPT/Sat Sep 20 22:28:57 2003. Её использует ВебКлиент, который подключён к серверу через JODBC. Так вот, сама проблема, если нет триггеров на таблицы, то всё работает стабильно и нормально стоит добавить триггеры (даже просто пустые, выполняющие пустой select), обновления не происходит... тобишь не срабатывает запрос на Update, при этом ошибки никакой не выдаёт, ни в лог ни куда, как-будто всё нормально, но запрос не проходит. Если подрубаться через ISQL, то все работает стабильно с триггерами или без, пытался воспроизвести эту ошибку всеми способами через ISQL - не получилось, всё стабильно. Не подскажите, в чём может быть проблема? Заранее прошу прощения за может быть допущенные ошибки в описании, так как не силён в Sybase и java технологиях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 11:42 |
|
||
|
При добавлении триггера не обновляет данные
|
|||
|---|---|---|---|
|
#18+
vadim_ps пишет: > Так вот, сама проблема, если нет триггеров на таблицы, то всё работает > стабильно и нормально стоит добавить триггеры (даже просто пустые, > выполняющие пустой select), обновления не происходит... тобишь не > срабатывает запрос на Update, при этом ошибки никакой не выдаёт, ни в > лог ни куда, как-будто всё нормально, но запрос не проходит. Если Скорее всего все же триггера здесь ни при чем. Или триггера люди вообще не умеют писать. Вопросы такие: 1) Что значит "обновления не происходит" ? Как вы понимаете, что что-то не происходит ? В деталях. 2) Пример триггера (даже просто пустого, выполняющие пустой select). Да, кстати, выполнять в триггере простой SELECT на самом деле нельзя, потому что клиентское приложение просто может быть не готово к принятию набора данных. Т.е. не будет его выбирать. В этом случае клиент и сервер подвиснут в вечном ожидании друг друга (грубо говоря). Так что рекомендую если и добавлять простые триггера, то такие, которые НЕ делают SELECT-ов на клиента (SELECT в переменные допустим). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:01 |
|
||
|
При добавлении триггера не обновляет данные
|
|||
|---|---|---|---|
|
#18+
MasterZiv 1) Что значит "обновления не происходит" ? Как вы понимаете, что что-то не происходит ? В деталях. Это означает, что не происходит изменение контента, тобишь выполняю запрос update Table set Column=1, а столбец Column всё равно равен 2, и никакой ошибки при этом не выдаётся. MasterZiv 2) Пример триггера (даже просто пустого, выполняющие пустой select). какие я только вариации "пустых" тригеров не перепробовал, на данном этапе остановился на Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 16:09 |
|
||
|
При добавлении триггера не обновляет данные
|
|||
|---|---|---|---|
|
#18+
vadim_ps пишет: > Это означает, что не происходит изменение контента, тобишь выполняю > запрос update Table set Column=1, а столбец Column всё равно равен 2, и > никакой ошибки при этом не выдаётся. Может не коммитится транзакция ? Это очень может быть, потому что в ASE вообще AUTOCOMMIT = ON по умолчанию, а в JDBC , на сколько я помню, как раз по умолчанию AUTOCOMMIT = OFF. Так что напр. если делаешь в ISQL UPDATE XXX set qqq = 'kkk' where .... go запись изменится, но если делаешь это через JDBC, надо делать UPDATE XXX set qqq = 'kkk' where ....; COMMIT; т.е. добавлять COMMIT . (Или можно конечно перевести коннекцию в состояние AUTOCOMMIT = ON). Я могу ошибаться на счет дефолта на AUTOCOMMIT в JDBC, но проверить стоит все равно. > какие я только вариации "пустых" тригеров не перепробовал, на данном > этапе остановился на > > create trigger K_2018871278_upd on MILITARY_PI for update > as > BEGIN > declare @tmp integer > select @tmp = *1* > END Это нормальный триггер , не должен он ломать ничего. > У меня такое предчувствие, что дело в количестве тригеров, и при > отработке запроса, там происходит переполнение "чего-то там", и > транзакция откатывается... может есть какая-нибудь настройка по этому > поводу? Нет. Триггер на таблицу всегда только один (на каждое действие) и ограничений на их количество нет. Хотя я специально писал средство, которое в одной транзакции > вставляло и изменяло по 255 записей в каждую таблицу, и проверяло > изменились ли записи, и всё прошло нормально, Э, если это делать в ОДНОЙ КОННЕКЦИИ, ты просто не заметиш, что у тебя транзакция незакоммичена еще. А когда сделаешь DISCONNECT, все откатится. только единственное > отличие - оно работало через ODBC, может собака порылась в различии > JODBC и ODBC. Ну похоже на AUTOCOMMIT = ON/OFF by default. Проверь по крайней мере. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 18:16 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34274536&tid=2012297]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 351ms |

| 0 / 0 |
