如何为来自两个不同数据库的记录维护唯一ID?

时间:2013-05-17 06:10:07

标签: database java-ee database-design business-intelligence business-logic

我在处理两个不同的企业应用程序时感到困惑。

从第一个应用程序A1和第二个应用程序A2,我们曾经向我们的打印供应商发送一些文档,为我们打印这些文件。

但是每个文档的文档ID(发送给打印供应商)是数据库的primaryKey ID。

例如:应用程序A1:
表名 = FILE_RECORDS

ID | FILE_NAME

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

申请A2
表名 = FILE_RECORDS

ID | FILE_NAME

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

现在,如果来自第一个数据库的file3.txt和来自第二个数据库的file5.txt将进入同一个打印供应商的FTP保管箱,那么它就会造成混乱。因为两者都有相同的文件ID = 104。

打印供应商需要每个文档的唯一ID。

我们如何克服这个问题?

1 个答案:

答案 0 :(得分:2)

使用唯一的应用程序ID预先添加唯一键。

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

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

每个应用程序都会生成一个独特的文档ID流。 DB只会生成数字部分,但您可以在SQL语句中添加应用程序ID:

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

你可以通过让一个应用程序以非常高的数量开始,例如2,000,000,000来以数字方式执行相同的操作。第三种选择是让一个应用程序产生偶数(乘以2)和其他奇数(乘以2并加1)。