【问题标题】:How to maintain unique Id for records coming from two different databases?如何为来自两个不同数据库的记录维护唯一 ID?
【发布时间】:2013-05-12 05:43:33
【问题描述】:

我在处理两个不同的企业应用程序时感觉卡住了。

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

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

例如:应用 A1:
表名 = FILE_RECORDS

标识 |文件名

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

应用程序 A2
表名 = FILE_RECORDS

标识 |文件名

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

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

印刷供应商希望每个文档都有唯一的 ID。

我们怎样才能克服这个问题?

【问题讨论】:

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


    【解决方案1】:

    在唯一键前面加上唯一的应用程序 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)。

    【讨论】:

    • 这里像A1_102、A1_103这样的ID不能由oracle数据库顺序生成。我正在开发一个具有商业重要性的应用程序,因此需要一些优化的解决方案。
    • 对,你有来自两列的组合值,一列是自动生成的,另一列是静态的。或者您在发送“到 FTP 框”时预先添加。您甚至可以在获取值的 SQL 语句中执行此操作。
    • 感谢您的解决方案。现在需要看看这是否可以应用于生产盒:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多