powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как обнулить identity в ASE 12.5
19 сообщений из 19, страница 1 из 1
Как обнулить identity в ASE 12.5
    #33746276
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помню где то читал, не могу найти (процедуру) - способ....
Как обнулить автоинкремент поле? DROP TABLE не предлагать...

Код: 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.
Получаю результат:
id_identity filename
 4 	   1 
 5 	   2 

А нужно:
id_identity filename
 1 	   1 
 2 	   2 

CREATE TABLE #f_temp
(
    id_identity     numeric         identity,
    filename        int             NULL
)

INSERT INTO #f_temp (filename) VALUES ( 1 )
INSERT INTO #f_temp (filename) VALUES ( 2 )
INSERT INTO #f_temp (filename) VALUES ( 3 )

TRUNCATE TABLE #f_temp

INSERT INTO #f_temp (filename) VALUES ( 1 )
INSERT INTO #f_temp (filename) VALUES ( 2 )

SELECT id_identity, filename FROM #f_temp

DROP TABLE #f_temp

...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33746421
Peter Kirillow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насколько я знаю только через DROP/CREATE таблицы, т.к. значение identity хранится в первой OAM page с данными и вычисляется каждый раз при вставке новой строки. и плевать она хотела на truncate.

а уж сколько проблем у этих identity ...
но это уже кому как нравится.
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33747497
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот описание методов борьбы
http://www.sypron.nl/idgaps.html
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33747609
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Peter Kirillowнасколько я знаю только через DROP/CREATE таблицы, т.к. значение identity хранится в первой OAM page с данными и вычисляется каждый раз при вставке новой строки. и плевать она хотела на truncate.

а уж сколько проблем у этих identity ...
но это уже кому как нравится.

Не в 12.5. В 12.5 уже давно все хорошо с identity. Вы просто читали устаревшие документы, ориентированные на предыдущие версии.
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33749152
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0rcвот описание методов борьбы
http://www.sypron.nl/idgaps.html
У меня стоит ASE 12.5.0.3
Взял и инструкции по ссылке тут
Но где то вкралась ошибка....
и результат остался без изменений....

Код: 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.
Результат:
id_identity filename
 4 	   1 
 5 	   2 


CREATE TABLE #f_temp
(
    id_identity     numeric         identity,
    filename        int             NULL
)

INSERT INTO #f_temp (filename) VALUES ( 1 )
INSERT INTO #f_temp (filename) VALUES ( 2 )
INSERT INTO #f_temp (filename) VALUES ( 3 )

TRUNCATE TABLE #f_temp

set identity_update #f_temp on

update #f_temp
set id_identity =  1 

set identity_update #f_temp off

INSERT INTO #f_temp (filename) VALUES ( 1 )
INSERT INTO #f_temp (filename) VALUES ( 2 )

SELECT id_identity, filename FROM #f_temp

DROP TABLE #f_temp
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33749247
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0rcвот описание методов борьбы
http://www.sypron.nl/idgaps.html Мне еще кажется, что это статья для латания дырок а не для обнуления identity как в моем случае... Так получается способа нет? Мне нужно использовать это внутри хранимых процедур. А DROP/CREATE плох тем, что блокируют tempdb... А MSSQL все как надо даже не знаю что сказать....
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33749354
Peter Kirillow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот я и говорю - надо учиться обходиться без identity
а вообще drop/create не должен быть сильно заметным глазу процессом
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33749460
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
declare @i numeric( 10 )
select @i=min(id_identity) from #f_temp

SELECT id_identity-@i+ 1  as id, filename FROM #f_temp
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33749491
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.
Код: plaintext
1.
2.
3.
4.
declare @i numeric( 10 )
select @i=min(id_identity) from #f_temp

SELECT id_identity-@i+ 1  as id, filename FROM #f_temp

Да, наверное, это лучший способ, спасибо....
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33750303
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Peter Kirillowвот я и говорю - надо учиться обходиться без identity
а вообще drop/create не должен быть сильно заметным глазу процессом

НЕ НАДО учиться обходиться без IDENTITY. Надо прочитать документацию и научиться ею пользоваться. Все средства для полным управлением IDENTITY в современном ASE (12.5.0.3 и выше) есть.

set identity_insert <TABLE_NAME> on/off

set identity_update <TABLE_NAME> on/off


Ставишь
set identity_insert/identity_update <TABLE_NAME> on

вставляешь или изменяешь записи,
ставишь
set identity_insert/identity_update <TABLE_NAME> off

и сервер воспринимает новое значение IDENTITY.

Есть identity_gap_size , который может устанавливаться для конкретной таблицы.
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33750323
Peter Kirillow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
верю. но ...

пройдет еще несколько версий прежде, чем я забуду ту обиду, которую мне нанесли эти identity будучи кривыми в предыдущих версиях :)
тем более, что у меня есть несколько замечательных способов жить без них
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33750340
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Peter Kirillowпройдет еще несколько версий прежде, чем я забуду ту обиду, которую мне нанесли эти identity будучи кривыми в предыдущих версиях :)
тем более, что у меня есть несколько замечательных способов жить без них

Без них нет "замечательных способов жить", если у тебя приложение хоть сколько-нибудь интенсивно работает в многопользовательском режиме. Это я тебе как дохтур говорю.
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33751083
sn1251
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Без них нет "замечательных способов жить", если у тебя приложение хоть сколько-нибудь интенсивно работает в многопользовательском режиме. Это я тебе как дохтур говорю.
А мужики-то в Оракле-то не знают... [:-)]
Мне сиквенсы нравятся - хочешь получай перед вставкой, хочешь после. Но не сделали в ASE, редиски.
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33754513
Badger А DROP/CREATE плох тем, что блокируют tempdb...
кхм, может я что-то пропустил ;)
но с какой стати тут tempdb то? ;))
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #33755388
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо его таблица с IDENTITY в tempdb.
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #34069435
Фотография Сашко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНадо прочитать документацию и научиться ею пользоваться. Все средства для полным управлением IDENTITY в современном ASE (12.5.0.3 и выше) есть.

set identity_insert <TABLE_NAME> on/off

set identity_update <TABLE_NAME> on/off


Ставишь
set identity_insert/identity_update <TABLE_NAME> on

вставляешь или изменяешь записи,
ставишь
set identity_insert/identity_update <TABLE_NAME> off

и сервер воспринимает новое значение IDENTITY.

Есть identity_gap_size , который может устанавливаться для конкретной таблицы.

Столкнулся с аналогичной проблемой. ASE 12.5.0.1. "set identity_insert off" не сбрасывает identity, identity_update не воспринимается set. :(
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #34069816
Фотография Сашко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь решить проблему пересозданием таблицы.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
сreate table #current_recipient (
ROW_NR numeric( 4 ) IDENTITY not null,
IDH int,
IDP numeric( 8 ) )
go
create procedure rc_current_recipient
as
begin
drop table #current_recipient

create table #current_recipient (
ROW_NR numeric( 4 ) IDENTITY not null,
IDH int,
IDP numeric( 8 ) )
END          
go

drop table #current_recipient
go

Пишет
Error: Number (3701) Severity (11) State (1) Cannot drop the table '#current_recipient', because it doesn't exist in the system catalogs.

Ну что такое!

Как же его решить эту проблему, кто нибудь может помочь?
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #34195863
Фотография ujcnm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ASE 12.5.0.3 и выше (я пробовал в 12.5.2) так:

exec sp_chgattribute TableName, 'identity_burn_max', 0, '0'
...
Рейтинг: 0 / 0
Как обнулить identity в ASE 12.5
    #34196368
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СашкоПытаюсь решить проблему пересозданием таблицы.

временная таблица созданная внутри хранимой процедуры или функции "execute( query )", дропается автоматически по их окончанию.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как обнулить identity в ASE 12.5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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