Как сохранить уникальный идентификатор для записей, поступающих из двух разных баз данных?

Я чувствую себя застрявшим во время работы над двумя разными корпоративными приложениями.

Из первого приложения A1 и второго приложения A2 мы отправляли некоторые документы нашему поставщику печати, который печатает эти файлы для нас.

Но идентификатор документа для каждого документа (отправленного поставщику печати) - это идентификатор primaryKey базы данных.

Например: Приложение A1:
Название таблицы = FILE_RECORDS

ID | ИМЯ ФАЙЛА

102 file1.txt
103 file2.txt
104 file3.txt

Приложение A2:
Название таблицы = FILE_RECORDS

ID | ИМЯ ФАЙЛА

104 file5.txt
105 file6.txt
106 file7.txt

Теперь, если file3.txt из первой базы данных и file5.txt из второй базы данных направляются в один и тот же Dropbox FTP поставщика печати, это создает путаницу. Потому что у обоих одинаковый идентификатор документа = 104.

Поставщику печати требуется уникальный идентификатор для каждого документа.

Как мы можем решить эту проблему?


person Kshitij Jain    schedule 17.05.2013    source источник


Ответы (1)


Добавьте уникальный ключ с уникальным идентификатором приложения.

A1_102 file1.txt
A1_103 file2.txt
A1_104 file3.txt 

и

A2_104 file5.txt
A2_105 file6.txt
A2_106 file7.txt 

Каждое приложение создает уникальный поток идентификаторов документов. База данных будет генерировать только числовую часть, но вы можете добавить идентификатор приложения в оператор SQL:

SELECT Concat('A1_',file_num), filename FROM files;

Вы можете сделать то же самое численно, запустив одно приложение с очень большого числа, например 2 000 000 000. Третий вариант - заставить одно приложение выдавать четные числа (умножить на два), а другое - нечетные числа (умножить на 2 и добавить 1).

person AgilePro    schedule 17.05.2013
comment
Здесь такие идентификаторы, как A1_102, A1_103, не могут быть последовательно сгенерированы базой данных Oracle. Я работаю над приложением, которое имеет важное значение для бизнеса, поэтому требуется какое-то оптимизированное решение. - person Kshitij Jain; 17.05.2013
comment
Правильно, у вас есть объединенные значения из двух столбцов, один автоматически сгенерированный, а другой статический. Или вы добавляете, когда отправляете в ящик FTP. вы даже можете сделать это в операторе SQL, который получает значение. - person AgilePro; 17.05.2013
comment
Спасибо за решение. Теперь нужно посмотреть, можно ли это применить в производственной коробке или нет :) - person Kshitij Jain; 17.05.2013