powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Тащим инфу Identity Column
10 сообщений из 10, страница 1 из 1
Тащим инфу Identity Column
    #35675310
Добрый день!
Мне нужно вытащить информацию, о колонке в таблице, что identity, точнее, какое следующие будет значение. В системных таблицах есть, все, окромя, вышесказаного. Я, конечно, понимаю, что можно сделать select max или select min (в зависимости от increment'a), но это не круто, если identity цикличный, то возможность ошибки очень высока. Вот такая штука identity_val_local() - тоже не особо катит. Это корректно срабатывает, только тогда, когда делается единичный insert.

Есть предположения, или решения моего вопроса?

Знаю, вопрос не ахти, но очень надо.
...
Рейтинг: 0 / 0
Тащим инфу Identity Column
    #35675739
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

А для чего именно вам это надо?
Опишите схематично, что вы хотите сделать.
...
Рейтинг: 0 / 0
Тащим инфу Identity Column
    #35675982
Фотография I_love_MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
//Экспортируем данные
EXPORT TO
  '%DATA_PATH%\DM_IDENT_NO_LOB1.ixf'
  OF IXF 
  SELECT * FROM "DM"."IDENT_NO_LOB";

//Кидаём таблицу, в таблице есть ident колонка, мы её запомним, для alterа в конце
DROP TABLE "DM"."IDENT_NO_LOB";
//Создаём таблицу, такую же, но без указаний, об ident колонки
CREATE TABLE "DM"."IDENT_NO_LOB" (
  "ID"	INTEGER,
  "ABC"	CHARACTER( 1 )
) 
  IN "ADAMSPACE"
  DISTRIBUTE BY HASH ( "ID" ) ;
//Доп. альтер
ALTER TABLE "DM"."IDENT_NO_LOB"
  DATA CAPTURE NONE
  LOCKSIZE ROW
  APPEND OFF
  NOT VOLATILE;


COMMIT;
//Грузим данные обратно
LOAD CLIENT FROM '%DATA_PATH%\DM_IDENT_NO_LOB1.del'
  OF DEL 
  MODIFIED BY
    IDENTITYOVERRIDE
  INSERT INTO DM.IDENT_NO_LOB(
    ID,
    ABC
    )
 INDEXING MODE REBUILD 
 ALLOW NO ACCESS ;
//Делаем alter на ту, колонку, что была ident. С новым значением START WITH <-- для этого и нужно
ALTER TABLE  "DM"."IDENT_NO_LOB"
ALTER "ID" SET 	GENERATED ALWAYS
    AS IDENTITY (START WITH  20 , INCREMENT BY  1 , NO CACHE,
       MINVALUE  0 , NO MAXVALUE, NO CYCLE, NO ORDER);

//Собираем статистику.
RUNSTATS ON TABLE "DM"."IDENT_NO_LOB"
  AND INDEXES ALL
  ALLOW READ ACCESS;

COMMIT;


По сути нужно для восстановления значения при изменение таблицы, когда её обязательно нужно дропнуть (и не обязательно, когда используется утилиты ипорта/лоада, например, когда используются темповые таблицы). И task содержит обязательно, делать сначала без идент, а потом делать альтер с новым значением START WITH
- Абсолют' ный
-посковый робот по MSDN для
- ленивых
...
Рейтинг: 0 / 0
Тащим инфу Identity Column
    #35676063
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я правильно понял, что перед drop вы хотите взять следующий номер identity?
...
Рейтинг: 0 / 0
Тащим инфу Identity Column
    #35676292
Фотография I_love_MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinЯ правильно понял, что перед drop вы хотите взять следующий номер identity?
Да, верно. Абсолютно точно.
...
Рейтинг: 0 / 0
Тащим инфу Identity Column
    #35676361
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
I_love_MSDNMark BarinsteinЯ правильно понял, что перед drop вы хотите взять следующий номер identity?
Да, верно. Абсолютно точно.Ну так сделайте перед drop при выключенном автокоммите что-то типа:
Код: plaintext
1.
select id from new table(insert into dm.ident_no_lob(abc) values ('')) t;
rollback;
?
...
Рейтинг: 0 / 0
Тащим инфу Identity Column
    #35676377
Фотография I_love_MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Хорошая информация.
А системно (в таблицах) нигде не указывается?
- Абсолют' ный
-посковый робот по MSDN для
- ленивых
...
Рейтинг: 0 / 0
Тащим инфу Identity Column
    #35676559
Фотография I_love_MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не ролбэчит. А нужно, что бы пользователь не потерял значение. =(
- Абсолют' ный
-посковый робот по MSDN для
- ленивых
...
Рейтинг: 0 / 0
Тащим инфу Identity Column
    #35676611
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
I_love_MSDNНе ролбэчит. А нужно, что бы пользователь не потерял значение. =(
- Абсолют' ный
-посковый робот по MSDN для
- ленивых Значение identity и не должно откатываться.
Rollback - для отката вставки и связанной с ним возможной логики.
Для no cache можно еще:
Код: plaintext
1.
2.
3.
4.
5.
select s.LASTASSIGNEDVAL
from sysibm.syscolumns as c, sysibm.sysdependencies as d, sysibm.syssequences as s  
where c.tbcreator = d.dschema and c.tbname = d.dname 
and d.bname = s.seqname and d.bschema = s.seqschema 
and c.identity = 'Y' and d.dtype = 'T' and d.btype =  'Q' and s.seqtype = 'I' 
and C.name='ID' and C.tbname='IDENT_NO_LOB' and C.tbcreator='DM'
...
Рейтинг: 0 / 0
Тащим инфу Identity Column
    #35676789
Фотография I_love_MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein,

спасибо большое!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Тащим инфу Identity Column
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]