Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / asa9: повторные значения autoincrement / 8 сообщений из 8, страница 1 из 1
03.02.2009, 14:55
    #35794031
Марсель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa9: повторные значения autoincrement
Возможно что это уже было, но не нашел.
Если делать вставку в таблицу с autoincrement PK и откатывать их, например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table test(id int not null default autoincrement primary key, col1 varchar( 10 ))

insert into test(col1) values('1');
select @@identity; // 1
rollback;

insert into test(col1) values('2');
select @@identity; // 2
rollback;
...
и жестко остановить сервак, то при следующем запуске сервака, значения будут выдаваться повторно 1, 2, ...
Это стандартное поведение ? В документации не нашел.

Заранее спасибо!
...
Рейтинг: 0 / 0
03.02.2009, 15:04
    #35794058
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa9: повторные значения autoincrement
Марсель пишет:

> и жестко остановить сервак, то при следующем запуске сервака, значения
> будут выдаваться повторно 1, 2, ...
> Это стандартное поведение ?

Вообще-то нет, но после жёсткой остановки (понимая под этим что-то вроде
нажатия на Reset) м.б. всё, что угодно, вплоть до полной порчи базы.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.02.2009, 09:57
    #35795492
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa9: повторные значения autoincrement
Dim2000
> Это стандартное поведение ?

Вообще-то нет, но после жёсткой остановки (понимая под этим что-то вроде
нажатия на Reset) м.б. всё, что угодно, вплоть до полной порчи базы.

+1 Меня тоже словосочетание "жесткая остановка" как то пугает честно говоря :)

Марсель, а у Вас там сервер ASA случайно не запускается с ключиком -u ?
...
Рейтинг: 0 / 0
05.02.2009, 09:04
    #35798148
Марсель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa9: повторные значения autoincrement
Dim2000
Вообще-то нет, но после жёсткой остановки (понимая под этим что-то вроде
нажатия на Reset) м.б. всё, что угодно, вплоть до полной порчи базы.

Кто бы спорил ;)
Дело в другом, сервак после этого пытается восстановить состояние до сбоя, восстанавливает, а значения autoincrement полей - нет.

ASCRUS
Марсель, а у Вас там сервер ASA случайно не запускается с ключиком -u ?

Нет, таким ключиком не пользуемся.
А проверял на тестовом серваке, все по умолчанию.
...
Рейтинг: 0 / 0
05.02.2009, 14:36
    #35799271
maxATC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa9: повторные значения autoincrement
Марсель
Возможно ASA делает приращение переменной @@identity в оперативной памяти и после checkpoint или корректной остановки базы сбрасывает значение в системную таблицу (вполне логично не писать сразу, изменений может быть сотни), а при жестком выключении соответственно и писать то не кому.
...
Рейтинг: 0 / 0
05.02.2009, 16:57
    #35799851
asa9: повторные значения autoincrement
Было у меня такое
Лечил вручную

в таком духе
CALL sa_reset_identity ('klient', 'dba', 0);
------------------------------------------------------
А вообще-то свои автоключи как-то понятнее

Делаешь генератор типа Getcount([table],[field]) и контролируешь что угодно...
Дублирование, диапазон и т.д.

И пусть оно там ломается - всегда в том же генераторе исправить можно автоматом
А вот без этого исправления на нагруженных таблицах периодически ломается и абсолютно непонятно почему(Что свои - что autoincrement)
Такие вот наблюдения
...
Рейтинг: 0 / 0
05.02.2009, 17:10
    #35799909
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa9: повторные значения autoincrement
Гриценко А.В. пишет:

> Делаешь генератор типа Getcount([table],[field]) и контролируешь что
> угодно...

Только с производительностью будут вилы...

> А вот без этого исправления на нагруженных таблицах периодически
> ломается и абсолютно непонятно почему(Что свои - что autoincrement)

Как ты этого добился?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
05.02.2009, 17:15
    #35799925
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa9: повторные значения autoincrement
Гриценко А.В.Было у меня такое
Лечил вручную

в таком духе
CALL sa_reset_identity ('klient', 'dba', 0);
------------------------------------------------------
А вообще-то свои автоключи как-то понятнее

Делаешь генератор типа Getcount([table],[field]) и контролируешь что угодно...
Дублирование, диапазон и т.д.

И пусть оно там ломается - всегда в том же генераторе исправить можно автоматом
А вот без этого исправления на нагруженных таблицах периодически ломается и абсолютно непонятно почему(Что свои - что autoincrement)
Такие вот наблюдения
Хе хе. На эту тему не одни копья сломаны, в том числе на sql.ru. Ваше решение во первых будет спотыкаться на блокировках, во вторых откатываться на транзакциях, в третьих требовать уровня REPEATABLEREAD или даже SERIALIZABLE для чтения текущего кода (в зависимости от реализации). Автоинкременты же - просто, надежно и беспроблемно. Не знаю, у кого и куда они слетают, у меня за все года работы проектов на АСА ни разу ни один инкремент никуда не слетал.

P.S. Не очень понятна конструкция CALL sa_reset_identity ('klient', 'dba', 0) - если у Вас в таблице уже есть значения инкреметного поля, то зачем счетчик на ноль сбрасывать ?
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / asa9: повторные значения autoincrement / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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