Вниз
Скачать: CL | DM;

Нужно создать типа генератора в Interbase!   Найти похожие ветки 

← →
kvit ©   (2004-09-01 11:34) [0]

У  меня будет N удаленных серверов. Данные через модем по запросу конкретной машины будут блужтать от сервера к серверу и автоматически будут обновляться все данные для этого (по моей логики) у каждой таблицы буду дополнительные поля ID: int (вместе с ID_parent создают уникальный ключ), ID_parent: int (имя сервера-родителя) и DT (дата обновления данных).

Мне нужно на каждом сервере создать типа генератора в InterBase чтобы порождать ID (нумерация начиналась с 0 (+1) типа IDENTITY, но так чтобы я сам мог принудительно записывать значение).
Т.е. другими словами у каждого сервера был свой автономный счетчик ID и имел свой счет. Но в любой момент я в данную таблицу мог вписать значения полученные от другого сервера (ID могут совпадать, а ID_parent быть разными).

Если кто поймет мои мозги, то помогите.. или я перефразирую вопрос :))


← →
Ega23 ©   (2004-09-01 11:37) [1]

1. Для IDENTITY усть директива Set IDENTITY Insert ON\OFF
2. Select @X=@@IDENTITY
3. Select @X=Max(ID)+1
4. Можно даже GUID генерить.

Вариантов много. Что ты хочешь?


← →
kvit ©   (2004-09-01 11:43) [2]

Есть например таблица (на удаленых серверах одинаковая):

TABLE1
 ID        : int;      //autoinc
 ...
 ID_parent : int;      // ID servera  
 DT        : Datetime; // GetDate()

------------
ID + ID_parent = KEY
------------
Нужно грамотно управлять ID, с учетом того что одинаковый ID, но разный ID_parent может вставиться посредством обновления с другого сервера.


← →
kvit ©   (2004-09-01 11:45) [3]

Управлять генератором поля ID


← →
Ega23 ©   (2004-09-01 12:03) [4]

См. [1].1


← →
kvit ©   (2004-09-01 12:09) [5]

Написал нечто:

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


← →
kvit ©   (2004-09-01 12:14) [6]

Я неправильно определил ON и OFF, поменял их местами => все заработало.

Ega23, спасибо за помощь!


← →
KSergey ©   (2004-09-02 07:56) [7]

По-моему, [1].4 - как-то вернее будет...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
4-1093525727
Kniff
2004-08-26 17:08
2004.10.03
Масштабирование окна.


6-1090842711
SergeyIgudin
2004-07-26 15:51
2004.10.03
StringList &amp; WinSocket


14-1095364274
Пострадавший
2004-09-16 23:51
2004.10.03
Платные дороги позволят водителями экономить


1-1095400109
Leaner
2004-09-17 09:48
2004.10.03
Вызов процедуры из собственной библиотеки.


1-1095237932
Misha123
2004-09-15 12:45
2004.10.03
ООП - корректный тип для экземпляра объекта




   Наверх