Главная страница
    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.052 c
3-1094024391
Koala
2004-09-01 11:39
2004.10.03
Клиент-сервер (MIDAS) под Firebird 1.5


3-1094460794
banderas
2004-09-06 12:53
2004.10.03
Учебник по БД


14-1095225731
Ozone
2004-09-15 09:22
2004.10.03
Интересная задачка


14-1095173381
zokzok
2004-09-14 18:49
2004.10.03
курсовая по программированию


3-1094220146
Thunder
2004-09-03 18:02
2004.10.03
Импорт txt в таблицу БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский