|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
есть занятная проблема. ситуация: есть таблица (любая), в которой есть primary key, который, например, задаётся так id int not null GENERATED BY DEFAULT AS IDENTITY (START WITH -2147483648, INCREMENT BY 1, NO CACHE) тим переменной роли не играет, самое главное, что есть generated by default as identity generated always в этой схеме не позволяет делать import вообще, поэтому его не рассматриваем. делаю ей db2 export ... хоть в формат del (стопудово), хоть в формат ixf (на 99%) затем делаю ей db2 import Например, в этой таблице 1000 записей уже есть и все они подряд, начиная с -2147483648 и далее в сторону увеличения. В итоге получаю точно такую же таблицу, НО, вставить я не могу ни одной строки, пока id задаю как default. Ошибка выскакивает 1000 раз, пока маркер (или кто там у неё внутри) default не станет -2147482648 и только тогда начинает вставляться новая запись. Если, например, в этой тысяче есть пропущенное значение, например сотое, то система выдаст 99 ошибок, потом вставит одну строку, а при попытке вставить ещё одну строну будет ругаться ещё 900 раз. то есть до тех пор, пока принимаемое default'ом значение совпадает с id существующих строк. Как это лечить цивилизованным способом? Раньше я делал (год назад, когда была необходимость) так: с помощью специального скрипта забивал все дырки в таблице по максимального значения, потом стирал все временные строки и всё начинало вставляться и замечательно работать, но в этом случае есть сильное затруднение, если учесть, что таблица может быть с разного рода unique комбинациями столбцов. Сейчас снова встала такая необходимость, но старый способ хочу по возможности избежать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2004, 21:34 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
вдогонку Система: OS/2 ACP2 / eComStation База: DB/2 v7.2 fixPack 11 Железо роли не играет. Вообще уверен, что ни система ни база здесь роли не играет, потому что такое наблюдалось на более ранних фиксах. Здесь возникает вопрос: это документированное поведение базы или это глюк ака фича? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2004, 21:41 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
GENERATED реализован через счетчик (1 значение), а не множество занятых. BY DEFAULT позволяет вставлять значения в ручную, но не учитывает их при генерации. Мы разделили на 2 области <0 - автоматом, >0 вручную. В твоем случае надо наверно утилиту писать для выравнивания счетчика с махсимальным введенным значением ключа. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 04:10 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
drop table; create table id int NOT NULL generated by default as identity (start with сколько нужно) ) import; может, есть возможность сделать alter table, это нужно доки смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 10:41 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
Увы, alter table ... generated ... as identity не навешивается. А с drop - create действительно выкрутиться можно, если на эту таблицу ссылок нет. Но можно drop и их, а после импорта восстановить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 11:46 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
Что-то или я не понимаю или ... Нельзя разве при импорте (или загрузке в таблицу) сказать что поле с id не загружать? В информиксе например можно сказать load from 'file' insert into table (список полей) и загрузятся только те поля которые указаны, а например поле идентификатора не загружать и его при вставке очередной строки сгенерирует сама СУБД. В DB2 так можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 15:24 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
Мне НУЖНО это поле загружать при импорте, потому что поле id используется в других таблицах. Нельзя ли этот счётчик увеличить каким-нибудь запросом? Ведь данные о моих таблицах хранятся в служебных таблицах, нет, ли там чего-нибудь такого? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2004, 14:19 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
select ssc.* from SYSIBM.SYSSEQUENCES SSS LEFT JOIN SYSIBM.SYSDEPENDENCIES SSD ON SSD.DNAME = SSS.SEQNAME AND SSD.DSCHEMA = SSS.SEQSCHEMA JOIN SYSIBM.SYSCOLUMNS SSC ON SSC.TBNAME = SSD.BNAME AND SSC.TBCREATOR = SSD.BSCHEMA AND SSC.GENERATED <> '' дает все колонки с identity. В SYSIBM.SYSSEQUENCES или SYSIBM.SYSDEPENDENCIES все данные (начальное значение, шаг, ... текущее значение итд) разбирайся сам, но править на прямую система вряд ли даст. А если даже даст - не советую. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2004, 08:14 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
нашёл в SYSIBM.SYSSEQUENCES START MAXVALUE MINVALUE Апдейтить не даёт. Как их заапдейтить? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2004, 17:20 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
Что тебе еще надо? В системные таблицы DB2 лазить руками не дает. Ты можешь при снятии backup сразу генерить скрипт на DROP - CREATE таблицы с нужным начальным значением поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2004, 05:16 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
What about ALTER SEQUENCE??? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2004, 12:00 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
AUTOINCREMENT != SEQUENCE imho ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2004, 20:27 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
Kamuzon спрашивал как изменить sequence. Identity как я помню меняется через ALTER TABLE. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2004, 20:25 |
|
GENERATED BY DEFAULT AS IDENTITY
|
|||
---|---|---|---|
#18+
to Nikolay Kulikov 28 янв 04, 21:34 - "есть занятная проблема. ситуация: есть таблица (любая), в которой есть primary key, который, например, задаётся так id int not null GENERATED BY DEFAULT AS IDENTITY" It was not a question about SEQUENCE.... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2004, 22:33 |
|
|
start [/forum/topic.php?fid=43&fpage=157&tid=1606344]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
others: | 314ms |
total: | 480ms |
0 / 0 |