Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как обнулить identity в ASE 12.5 / 19 сообщений из 19, страница 1 из 1
23.05.2006, 16:54
    #33746276
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
Помню где то читал, не могу найти (процедуру) - способ....
Как обнулить автоинкремент поле? 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
23.05.2006, 17:25
    #33746421
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
насколько я знаю только через DROP/CREATE таблицы, т.к. значение identity хранится в первой OAM page с данными и вычисляется каждый раз при вставке новой строки. и плевать она хотела на truncate.

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

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

Не в 12.5. В 12.5 уже давно все хорошо с identity. Вы просто читали устаревшие документы, ориентированные на предыдущие версии.
...
Рейтинг: 0 / 0
24.05.2006, 16:32
    #33749152
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
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
24.05.2006, 16:54
    #33749247
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
0rcвот описание методов борьбы
http://www.sypron.nl/idgaps.html Мне еще кажется, что это статья для латания дырок а не для обнуления identity как в моем случае... Так получается способа нет? Мне нужно использовать это внутри хранимых процедур. А DROP/CREATE плох тем, что блокируют tempdb... А MSSQL все как надо даже не знаю что сказать....
...
Рейтинг: 0 / 0
24.05.2006, 17:22
    #33749354
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
вот я и говорю - надо учиться обходиться без identity
а вообще drop/create не должен быть сильно заметным глазу процессом
...
Рейтинг: 0 / 0
24.05.2006, 17:49
    #33749460
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
Код: 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
24.05.2006, 17:56
    #33749491
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
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
25.05.2006, 09:39
    #33750303
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
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
25.05.2006, 09:44
    #33750323
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
верю. но ...

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

Без них нет "замечательных способов жить", если у тебя приложение хоть сколько-нибудь интенсивно работает в многопользовательском режиме. Это я тебе как дохтур говорю.
...
Рейтинг: 0 / 0
25.05.2006, 12:46
    #33751083
sn1251
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
MasterZiv
Без них нет "замечательных способов жить", если у тебя приложение хоть сколько-нибудь интенсивно работает в многопользовательском режиме. Это я тебе как дохтур говорю.
А мужики-то в Оракле-то не знают... [:-)]
Мне сиквенсы нравятся - хочешь получай перед вставкой, хочешь после. Но не сделали в ASE, редиски.
...
Рейтинг: 0 / 0
26.05.2006, 15:01
    #33754513
Как обнулить identity в ASE 12.5
Badger А DROP/CREATE плох тем, что блокируют tempdb...
кхм, может я что-то пропустил ;)
но с какой стати тут tempdb то? ;))
...
Рейтинг: 0 / 0
26.05.2006, 19:16
    #33755388
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
Видимо его таблица с IDENTITY в tempdb.
...
Рейтинг: 0 / 0
20.10.2006, 12:48
    #34069435
Сашко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
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
20.10.2006, 14:05
    #34069816
Сашко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
Пытаюсь решить проблему пересозданием таблицы.

Код: 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
13.12.2006, 11:38
    #34195863
ujcnm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить identity в ASE 12.5
в ASE 12.5.0.3 и выше (я пробовал в 12.5.2) так:

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

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


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