![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужно создать типа генератора в Interbase! [D5, MSSQL]
kvit © (2004-09-01 11:34:00)У меня будет N удаленных серверов. Данные через модем по запросу конкретной машины будут блужтать от сервера к серверу и автоматически будут обновляться все данные для этого (по моей логики) у каждой таблицы буду дополнительные поля ID: int (вместе с ID_parent создают уникальный ключ), ID_parent: int (имя сервера-родителя) и DT (дата обновления данных).
Мне нужно на каждом сервере создать типа генератора в InterBase чтобы порождать ID (нумерация начиналась с 0 (+1) типа IDENTITY, но так чтобы я сам мог принудительно записывать значение).
Т.е. другими словами у каждого сервера был свой автономный счетчик ID и имел свой счет. Но в любой момент я в данную таблицу мог вписать значения полученные от другого сервера (ID могут совпадать, а ID_parent быть разными).
Если кто поймет мои мозги, то помогите.. или я перефразирую вопрос :))
KSergey (2004-09-02 07:56:00) [1]По-моему, [1].4 - как-то вернее будет...
kvit (2004-09-01 12:14:00) [2]Я неправильно определил ON и OFF, поменял их местами => все заработало.
Ega23, спасибо за помощь!
kvit (2004-09-01 12:09:00) [3]Написал нечто:
if (@ID_par<>0)
begin
SET IDENTITY_INSERT P OFF
declare @ID int
set @ID=1+(select ISNULL (max(ID),0) from P) --эмуляция вставки с другого сервера
insert into P (ID, MSG, ID_server) values (@ID, @msg, @ID_par)
end
else
begin
SET IDENTITY_INSERT P ON
insert into P ( MSG, ID_server) values ( @msg, @ID_par)
end;
Но ругня идет на команду SET IDENTITY_INSERT P ON/OFF
Ega23 (2004-09-01 12:03:00) [4]См. [1].1
kvit (2004-09-01 11:45:00) [5]Управлять генератором поля ID
kvit (2004-09-01 11:43:00) [6]Есть например таблица (на удаленых серверах одинаковая):
TABLE1
ID : int; //autoinc
...
ID_parent : int; // ID servera
DT : Datetime; // GetDate()
------------
ID + ID_parent = KEY
------------
Нужно грамотно управлять ID, с учетом того что одинаковый ID, но разный ID_parent может вставиться посредством обновления с другого сервера.
Ega23 (2004-09-01 11:37:00) [7]1. Для IDENTITY усть директива Set IDENTITY Insert ON\OFF
2. Select @X=@@IDENTITY
3. Select @X=Max(ID)+1
4. Можно даже GUID генерить.
Вариантов много. Что ты хочешь?