Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Вниз

Нужно создать типа генератора в 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 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.045 c
14-1095332722
СатирЪ
2004-09-16 15:05
2004.10.03
Уникальный номер


14-1095408271
Prohodil Mimo
2004-09-17 12:04
2004.10.03
Что более правильно: предопределённый массив или CASE?


14-1095188724
Agent[007]
2004-09-14 23:05
2004.10.03
Проблема с CD-ROM ом


3-1094463960
galexis
2004-09-06 13:46
2004.10.03
Передача данных запроса к БД из потока


8-1089442347
Andrew
2004-07-10 10:52
2004.10.03
Как нарисовать на канвасе Bitmap вращающуюся спираль?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский