【问题标题】:Can multiple tables have same composite keys? Spring boot + Spring Data JPA + Oracle多个表可以有相同的组合键吗? Spring Boot + Spring Data JPA + Oracle
【发布时间】:2020-06-19 04:34:32
【问题描述】:

我有两个表 - SALES 和 ITEMS,没有定义主键。我需要为这两个表及其组合键创建实体,因为这些表没有主键。该表包含的两个属性是:

  1. 店铺编号
  2. 订单号

多个表可以有相同的组合键吗?如果没有,在这种情况下我怎么能有一个复合键?

【问题讨论】:

    标签: java spring oracle spring-boot spring-data-jpa


    【解决方案1】:

    是的,没问题。唯一的限制是这些主键约束不能具有相同的名称。

    SQL> create table a (store number, corder number);
    
    Table created.
    
    SQL> create table b (store number, corder number);
    
    Table created.
    
    SQL> alter table a add constraint pka primary key (store, corder);
    
    Table altered.
    
    SQL> alter table b add constraint pka primary key (store, corder);
    alter table b add constraint pka primary key (store, corder)
                                 *
    ERROR at line 1:
    ORA-02264: name already used by an existing constraint
    
    
    SQL> alter table b add constraint pkb primary key (store, corder);
    
    Table altered.
    
    SQL>
    

    【讨论】:

    • 好的。我将创建一个 Embeddable 类 (SalesPK) 并将其嵌入到 Sales.java 类中。 SalesPK 类将有两个属性(复合键):sales_no 和 order_no。 Order.java 类也是如此。它将具有 OrderPK 类型的 Id 属性,这是一个具有以下属性的可嵌入类:sales_no 和 order_no。希望这会奏效。
    • 对不起,我不明白“好吧”后面的任何内容。我不会说Java,所以...我对此毫无用处。但是,作为故事的 Oracle(数据库)部分,是的 - 正如我的示例所示,您可以拥有这样的主键。祝你好运!
    • 谢谢@Littlefoot
    猜你喜欢
    • 2021-12-15
    • 2014-12-06
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 2017-05-09
    • 2017-12-30
    • 1970-01-01
    相关资源
    最近更新 更多