【发布时间】:2016-09-14 23:06:33
【问题描述】:
首先,我希望这种问题被接受,意思是对问题的反思(相当复杂)和可能的解决方案(即使是简单的想法也受到欢迎)。
让我们一起去头脑风暴的世界吧!
假设我有一个表“product”,其中有两个字段,分别称为“prd_id”和“prd_num”。 - “prd_id”是主键,并以 Oracle 序列 (mySeq.nextval) 递增。 - “prd_num”是“prd_id”的副本,主要用于显示/逻辑目的。
问题是“prd_num”对于用户来说变得太复杂了(就其用途而言)。
因此我们的想法是创建一个新序列,该序列将随着“prd_id”(使用旧序列)的增加而增加字段“prd_num”,但这里的不同之处在于我们能够指定某种模式(可能使用 xml 配置文件等。)基于使用应用程序的客户端(客户端之间的区别是通过“产品”表中的另一个字段完成的。
示例:对于 client1,我们将定义模式“CLT1XXXX”,其中 XXXX 是一个简单的增量。
SO => 我不认为 Oracle 可以处理这种类型的序列(以某种模式将字母与数字混合),因此欢迎 Java/hibernate 中的任何想法。
希望听到一些想法!
【问题讨论】:
-
预言机序列只会生成一个数字。您可以构建一个 PL/SQL 函数,在前面添加您想要的任何内容。但是如果prd_num是数字,就不能存到表中了。
-
如果需要,我也可以改变它的结构。
-
您最好使用 pl/sql 函数将值添加到序列中,将连接的前缀和序列值返回到(例如)插入语句。作为记录,您也可以在普通的 sql 查询中执行此操作。 "select 'CLT1'||to_char(myval_from_sequence) from sequence_name",例如。
标签: java oracle hibernate sequence