Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема при Create view ... with row movment
|
|||
|---|---|---|---|
|
#18+
DB2 8.2 express-c luw пробовал и на 9.5 В этом посте тут (ближе к низу) Mark Barinstein предложил разделить большую таблицу на архивную и активную и сделать на эти две таблицы view with row movment Все было хорошо на простом тестовом примере, но как дело дошло до реальной таблицы вылезлаа проблема: при попытке выполнить такой скрипт: Код: plaintext Ругается SQL2026 Reason code 3 что означает не могу создать view с WITH ROW MOVEMENT так как не все колонки updatable... если убрать GENERATED BY DEFAULT (заменить на сиквенс + триггер бефоре инсерт) из обоих таблиц то все пучком, но тогда мне придется переделывать и довольно сильно приложение, чего бы не хотелось. может что-то где-то можно в DB2 настроить что бы создать view? если честно, то я не понял почему db2 не дает создать такую view ведь у колонок стоит BY DEFAULT, вот если бы стояло GENERATED ALWAYS то я бы понял.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2008, 10:21 |
|
||
|
Проблема при Create view ... with row movment
|
|||
|---|---|---|---|
|
#18+
Хоть это и похоже на баг, но мне кажется, что это логически неправильно - использовать generated поля здесь. По-хорошему, у двух таблиц должет быть единый счетчик для идентификатора. Иначе легко получить ситуацию, где id в обеих таблицах у некоторых строк одинаковые и вы не переместите строку из одной таблицы в другую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2008, 11:40 |
|
||
|
Проблема при Create view ... with row movment
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinХоть это и похоже на баг, но мне кажется, что это логически неправильно - использовать generated поля здесь. По-хорошему, у двух таблиц должет быть единый счетчик для идентификатора. Иначе легко получить ситуацию, где id в обеих таблицах у некоторых строк одинаковые и вы не переместите строку из одной таблицы в другую. при желании я могу одинаковый id вставить и без generated by default если из выше приведенного скрипта убрать generated by default Вот это запросто прокатывает Код: plaintext 1. 2. и после попытка выполнить update t set dt = '2008-01-01' where dt = '2007-01-01' дает отлуп по первичному ключу t1 я попытался убрать у одной таблицы generated by default а у другой оставил - все равно та же ошибка. в принципе в моем случае разделения на актив/архив не может быть ситуации с одинаковыми id так как в архив данные напрямую не втавляются. Может какой способ есть для Create view ... with row movment что бы указать ведущую и подчиненную таблицы? А можно как то в IBM написать про этоу баго-фичу мож они пофиксят :) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2008, 14:24 |
|
||
|
Проблема при Create view ... with row movment
|
|||
|---|---|---|---|
|
#18+
Alexey KuznetsovРугается SQL2026 Reason code 3 что означает не могу создать view с WITH ROW MOVEMENT так как не все колонки updatable...Выяснилось, что это фича. Alexey Kuznetsovесли убрать GENERATED BY DEFAULT (заменить на сиквенс + триггер бефоре инсерт) из обоих таблиц то все пучком, но тогда мне придется переделывать и довольно сильно приложение, чего бы не хотелось.Можете объяснить, почему придется переделывать приложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 10:26 |
|
||
|
Проблема при Create view ... with row movment
|
|||
|---|---|---|---|
|
#18+
Mark Barinsteinэто фича. жаль... Можете объяснить, почему придется переделывать приложение? Наше приложение написано на java причем написано не очень изящно :) И все завязано на получение ID последней вставленной записи через IDENTITY_VAR_LOCAL причем это поведение прошито в базовом классе... соответственно если я для 3-х таблиц переделаю на тригер + сиквенс мне надо как-то исхитрится получать для этих таблиц ID, т.е. надо будет найти все места в программе и их поправить на другой способ получения ID (например select ID from insert). Вобщем по большому счету проблема не в БД а внашей кривововатой программе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 11:25 |
|
||
|
Проблема при Create view ... with row movment
|
|||
|---|---|---|---|
|
#18+
Путем пристального изучения возможностей jdbc был найден метод у Connection PreparedStatement prepareStatement(String sql, int columnIndexes[]) И если в этот метод передать индекс (жалко что не имя) колонки которая у нас является ID то после выполнения insert можно легко получить ее значение используя метод ResultSet getGeneratedKeys() . Теперь не придется много менять в коде, надо только определить индекс колонки и подсовывать его перед выполнением запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 05:01 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=35247576&tid=1603927]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 392ms |

| 0 / 0 |
