Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
XDefender
Member

Откуда: Moldova Beltsy
Сообщений: 301
Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?
Я имею ввиду Identity.
19 май 03, 14:52    [202769]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Какой сгенерировал можно через SCOPE_IDENTITY( )
19 май 03, 14:55    [202774]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Ну так вставь запись и прочитай значение.
19 май 03, 14:56    [202779]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
XDefender
Member

Откуда: Moldova Beltsy
Сообщений: 301
Объясняю еще раз.

на поле ID у меня стоит Identiny c шагом 2.

Происходит в ставка, а я для поля IDI это-же таблицы
хочу присвоить значение равное ID+dbo.GetFlag('SERVER_ID')
где dbo.GetFlag('SERVER_ID') - моя функция.

Понятно, что я пишу еще одну функцию, которая
1) Берет из системных таблиц последнее значение данного поля
2) Увеличивает его на два
3) добавляет значение dbo.GetFlag('SERVER_ID')

и передает его как значение по умолчанию в поле IDI
19 май 03, 15:29    [202830]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Сделай все это в триггере FOR INSERT.
19 май 03, 15:36    [202851]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А что вычисляемый столбец прикрутить нельзя?
19 май 03, 15:42    [202864]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
XDefender
Member

Откуда: Moldova Beltsy
Сообщений: 301
> Сделай все это в триггере FOR INSERT.
Сделал давно... но это создает другую проблему.. довольно большую и нерешаемую.. поэтому лучше так, как я описал выше..

> А что вычисляемый столбец прикрутить нельзя?
Нет.. результат должен после вставки сохранится таким, как его вставили.. а значение dbo.GetFlag('SERVER_ID') может менятся.
19 май 03, 15:48    [202871]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
но это создает другую проблему.. довольно большую и нерешаемую.. поэтому лучше так, как я описал выше..

А нерешаемая проблемма в чем выражается?
19 май 03, 15:53    [202886]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
XDefender
Member

Откуда: Moldova Beltsy
Сообщений: 301
Вы кого хотите из равновесия выведете..

Проблема не решаема в том смысмле, что в Delphi при DataSet.APPEND
запись не появляется.. и это именно из-за этого... ну еще долго объяснять.
В общем.. от использования INSERT лучше уйди... так как там еще UPDATE добавляется.. что повлияет на скорость.

В общем забыли про это.. я этот вопрос уже 4 день мусолил, и решил выработать именно это решение, т.е. считывать IDENTITY из таблицы.

Поэтому вопрос остается в силе..

Одно из решений, которое я сейчас нашел:

(ident_current('FIRMS_SUB') + [dbo].[GetFlag_INT]('SERVER_ID') + 1)
19 май 03, 16:25    [202943]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Проблема не решаема в том смысмле, что в Delphi при DataSet.APPEND
запись не появляется.. и это именно из-за этого... ну еще долго объяснять.
В общем.. от использования INSERT лучше уйди... так как там еще UPDATE добавляется.. что повлияет на скорость.


Из равновесия я никого выводить не хотел. Но где ты тут проблему нарыл? А чем тебе помогут значения по умолчанию? Эффект будет тот же самый, пока ты не перевыберешь запись, твоих значений, которые сгенерировались на сервере, как значения по умолчанию, в добавленной записи в клиенском приложении не будет. Да и причем тут скорость?
19 май 03, 16:39    [202972]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Проблема не решаема в том смысмле, что в Delphi при DataSet.APPEND
запись не появляется.. и это именно из-за этого... ну еще долго объяснять.
В общем.. от использования INSERT лучше уйди... так как там еще UPDATE добавляется.. что повлияет на скорость.


Ндааааа.........

Ты ба через хранимые процедуры добавлял бы значения-то, а? Чтобы было все так, как надо, по-правильному.

А то получается , что дураки в MS сидят - понапридумывали всяких identity
19 май 03, 16:48    [202995]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
XDefender
Member

Откуда: Moldova Beltsy
Сообщений: 301
Из равновесия я никого выводить не хотел. Но где ты тут проблему нарыл? А чем тебе помогут значения по умолчанию? Эффект будет тот же самый, пока ты не перевыберешь запись, твоих значений, которые сгенерировались на сервере, как значения по умолчанию, в добавленной записи в клиенском приложении не будет. Да и причем тут скорость?

Вот проблему при помощи Default значений я и решил...

Ты ба через хранимые процедуры добавлял бы значения-то, а? Чтобы было все так, как надо, по-правильному.

А то получается , что дураки в MS сидят - понапридумывали всяких identity


Нет, проблема была совсем в другом...
В общем... оставит этот разговор, т.к. проблема мной была решена (без вашей помощи)
19 май 03, 17:59    [203125]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Если вы считате вот это вот

(ident_current('FIRMS_SUB') + [dbo].[GetFlag_INT]('SERVER_ID') + 1)

решением своей проблемы, то это не так.
19 май 03, 18:01    [203128]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
XDefender
Member

Откуда: Moldova Beltsy
Сообщений: 301
Если вы считате вот это вот
(ident_current('FIRMS_SUB') + [dbo].[GetFlag_INT]('SERVER_ID') + 1)
решением своей проблемы, то это не так.


Аргументы..
19 май 03, 18:04    [203133]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, какой ID сгенерирует MS SQL 2000 для поля ID таблицы FIRMS ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
BOL
IDENT_CURRENT- Returns the last identity value generated for a specified table in any session and any scope.

Где гарантия того, что читаемое вами в данный момент значение IDENT_CURRENT это значение добавленной именно в текущем коннекте записи ? Нет такой гарантии.
19 май 03, 18:09    [203144]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить