如何在 Oracle 19c IDE (Intellij) 中按引用分区?

问题描述 投票:0回答:1

Oracle 19c 不支持“按引用分区”吗?

由于某种原因,当我在创建表时尝试通过引用分区时,我的 IDE (Intellij) 不断抱怨,说: “预期为 HASH、LIST、RANGE、SQL_REFERENCE 或 SYSTEM,得到“REFERENCE””

我查了Oracle版本,这是Oracle 19c。

我尝试按列表分区,这有效。

我尝试创建父表和子表,并将主键和外键定义为表约束而不是列约束。不起作用。

我尝试了在这里找到的示例:

CREATE TABLE orders (
  order_id    NUMBER PRIMARY KEY,
  order_date  DATE NOT NULL,
  customer_id NUMBER NOT NULL,
  shipper_id  NUMBER)
PARTITION BY RANGE (order_date) (
  PARTITION y1 VALUES LESS THAN (TO_DATE('01-JAN-2006', 'DD-MON-YYYY')),
  PARTITION y2 VALUES LESS THAN (TO_DATE('01-JAN-2007', 'DD-MON-YYYY')),
  PARTITION y3 VALUES LESS THAN (TO_DATE('01-JAN-2008', 'DD-MON-YYYY')));

CREATE TABLE order_items (
  order_id    NUMBER NOT NULL,
  product_id  NUMBER NOT NULL,
  price       NUMBER,
  quantity    NUMBER,
  CONSTRAINT order_items_fk FOREIGN KEY (order_id) REFERENCES orders)
PARTITION BY REFERENCE (order_items_fk);

这也行不通...

但是在 Oracle SQL Developer 中确实有效!

这是什么原因造成的? 可能是一些非常愚蠢的错误? (我希望)

intellij-idea oracle-sqldeveloper partitioning database-partitioning oracle19c
1个回答
0
投票

引用分区基于父表的主约束和子表的外键约束。分区键应该是主键列。在您的示例中,您按没有主键的日期列进行分区。

© www.soinside.com 2019 - 2024. All rights reserved.