Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
У меня есть таблица (например, Table1) в бд и у нее есть столбец (например, ID), который является первичным ключом и определяется автоинкрементом с шагом 1. Как мне определить текущее значение счетчика автоинкремента? И как мне его поменять на некоторое значение, например, 18? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 09:12 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
ASukhov1986, Чтобы узнать текущее значение, гадо его "потребить", т.е. вставить запись, после чего сделать rollback. Правда, увеличение значения счетчика не откатится. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 09:56 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, спасибо тогда у меня следующий вопрос: Я выполнил миграцию БД на DB2 с 9 на 10.55 с помощью утилиты db2move (export, создал с помощью команды create database БД, import, написал скрипт добавления функций процедур, триггеров и т.д.). Затем в моей системе начал добавлять (обновлять) в таблицу новую запись INSERT INTO WORK_PLACE_ACTUAL (LOCAL_CODE_ID,WORK_PLACE_NAME,SESS_ID) VALUES(6,'788',19) возникла следующая ошибка: DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0723N An error occurred in a triggered SQL statement in trigger "METR.WORK_PLACE_INS". Information returned for the error includes SQLCODE "-803", SQLSTATE "23505" and message tokens "1|METR.WORK_PLACE". SQLSTATE=09000. Как ее исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 10:46 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, триггер тут непричем, т.к. на DB2 9 все работает правильно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 10:47 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
ASukhov1986, Какое-то действие, которое вы делаете с таблицей METR.WORK_PLACE в триггере на WORK_PLACE_ACTUAL, приводит к появлению дублей в уникальном индексе: Код: sql 1. 2. 3. 4. 5. Вам надо разобраться, почему это происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 10:59 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, я еще заметил, что e DB2 9 в системной таблице SYSIBM.SYSTABLES есть моя таблица WORK_PLACE креэйтор METR, в в DB2 10.55 нет. может это как то влиять или нет на возникновение этой ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 12:10 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, последнее сообщение неверно, проверил запросом select * from SYSIBM.SYSTABLES where CREATOR='METR' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 12:16 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, я разобрался нужно выполнить следующий скрипт alter table WORK_PLACE alter WORK_PALCE_ID restart with 100 где 100 - это максимальное значение WORK_PALCE_ID плюс 1 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 12:34 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
ASukhov1986, db2look на db2 9 должна была сгенерировать в числе прочего и команды рестарта sequence/identity. Вы ей пользовались для переноса DDL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 12:38 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 14:42 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, export->create database->import->create all other objects ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 14:44 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Как в DB2 в команде alter table WORK_PLACE alter WORK_PALCE_ID restart with 100 вместо значение 100 реализовать select value(max(METR.WORK_PALCE_ID),0)+1 from METR.WORK_PLACE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 15:59 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
ASukhov1986, Никак. Такие запросы можно генерировать в несколько приемов. Вам надо последовательно: - Выполнить запрос (1): Код: sql 1. 2. 3. - он вернет текст запроса (2), который надо выполнить - результатом будет та команда (ALTER), которая вам нужна Таким образом, убрав WHERE в запросе (1), можно хоть для всех IDENTITY в базе сразу сгенерировать команды рестарта. Только на каждом этапе будут возвращаться не отдельные команды, а несколько - по числу IDENTITY полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 18:00 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein,а как выполнить полученную команду, в MS SQL SERVER есть процедура sp_executesql, а как в DB2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 17:23 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, вот моя процедура, которая реализует обновление RESTART для всех таблиц БД Код: 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. при выполнении команды Код: plsql 1. возникает следующая ошибка: An EXECUTE IMMEDIATE statement contains a SELECT or VALUES statement.. SQLCODE=-84, SQLSTATE=42612, DRIVER=4.18.60. Как ее устранить? Я так понял что в команде EXECUTE IMMEDIATE не должно быть команды SELECT, тогда существует другая команда кроме EXECUTE IMMEDIATE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 09:50 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
ASukhov1986,вопрос решен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 10:34 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
ASukhov1986, через PREPARE S1 FROM DSQL; EXECUTE S1; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 10:36 |
|
||
|
Текущее значение индекса автоинкремента уникального столбца
|
|||
|---|---|---|---|
|
#18+
ASukhov1986, Как-то так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Може выполнить как есть, чтоб посмотреть, какая команда для каждой таблицы будет выполняться. Если хотите оформить в виде процедуры то заверните begin ... end в процедуру, раскомментируйте execute immediate, уберите call. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 11:58 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=38894768&tid=1600869]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 396ms |

| 0 / 0 |
