How to fix "ERROR: FK name length exceeds maximum allowed length(30)" in SQL Developer Data Modeller
How to fix "ERROR: FK name length exceeds maximum allowed length(30)" in SQL Developer Data Modeller
我正在尝试将数据库的逻辑模型转换为 DDL 脚本,但我不知道如何修复 DDL 脚本或数据建模器中的此错误:-- 错误:FK 名称长度超过最大值允许长度(30)
它似乎是基于我的 junction-table 的主键,它是由两个相邻 tables.
的两个外键组成的
我尝试更改相邻 table 中主键的名称,但是当我尝试使用 Data Modeler 生成新的 DDL 脚本时,它仍然生成旧脚本。
下面是创建 3 个 table 和 link 的代码部分:
CREATE TABLE items (
item_no NUMBER (8) NOT NULL,
"year" DATE,
price NUMBER (20,2)
);
ALTER TABLE items ADD CONSTRAINT items_pk PRIMARY KEY ( item_no );
CREATE TABLE purchase_order (
order_no NUMBER(8) NOT NULL,
quantity INTEGER,
item_description VARCHAR2(200),
unit_price NUMBER(20,2),
total NUMBER(20,2),
order_date DATE,
sales_person_code VARCHAR2(5) NOT NULL,
supplier_id NUMBER(3) NOT NULL
);
ALTER TABLE purchase_order ADD CONSTRAINT purchase_order_pk PRIMARY KEY ( order_no );
CREATE TABLE purchase_order_items (
purchase_order_order_no NUMBER(8) NOT NULL,
items_item_no NUMBER(8) NOT NULL
);
ALTER TABLE purchase_order_items ADD CONSTRAINT purchase_order_items_pk PRIMARY KEY ( items_item_no,
purchase_order_order_no );
ALTER TABLE purchase_order_items
ADD CONSTRAINT purchase_order_items_items_fk FOREIGN KEY ( items_item_no )
REFERENCES items ( item_no );
-- ERROR: FK name length exceeds maximum allowed length(30)
ALTER TABLE purchase_order_items
ADD CONSTRAINT purchase_order_items_purchase_order_fk FOREIGN KEY ( purchase_order_order_no )
REFERENCES purchase_order ( order_no );
ALTER TABLE purchase_order
ADD CONSTRAINT purchase_order_sales_person_fk FOREIGN KEY ( sales_person_code )
REFERENCES sales_person ( code );
ALTER TABLE purchase_order
ADD CONSTRAINT purchase_order_supplier_fk FOREIGN KEY ( supplier_id )
REFERENCES supplier ( id );
所以我不确定到底是什么 FK 名称长度太长以及我需要在脚本中更改什么来修复此错误。
Oracle 将标识符限制为 30 个字符,因此
purchase_order_items_purchase_order_fk
需要短路。也许像 poi_purchase_porder_fk
.
我正在尝试将数据库的逻辑模型转换为 DDL 脚本,但我不知道如何修复 DDL 脚本或数据建模器中的此错误:-- 错误:FK 名称长度超过最大值允许长度(30) 它似乎是基于我的 junction-table 的主键,它是由两个相邻 tables.
的两个外键组成的我尝试更改相邻 table 中主键的名称,但是当我尝试使用 Data Modeler 生成新的 DDL 脚本时,它仍然生成旧脚本。
下面是创建 3 个 table 和 link 的代码部分:
CREATE TABLE items (
item_no NUMBER (8) NOT NULL,
"year" DATE,
price NUMBER (20,2)
);
ALTER TABLE items ADD CONSTRAINT items_pk PRIMARY KEY ( item_no );
CREATE TABLE purchase_order (
order_no NUMBER(8) NOT NULL,
quantity INTEGER,
item_description VARCHAR2(200),
unit_price NUMBER(20,2),
total NUMBER(20,2),
order_date DATE,
sales_person_code VARCHAR2(5) NOT NULL,
supplier_id NUMBER(3) NOT NULL
);
ALTER TABLE purchase_order ADD CONSTRAINT purchase_order_pk PRIMARY KEY ( order_no );
CREATE TABLE purchase_order_items (
purchase_order_order_no NUMBER(8) NOT NULL,
items_item_no NUMBER(8) NOT NULL
);
ALTER TABLE purchase_order_items ADD CONSTRAINT purchase_order_items_pk PRIMARY KEY ( items_item_no,
purchase_order_order_no );
ALTER TABLE purchase_order_items
ADD CONSTRAINT purchase_order_items_items_fk FOREIGN KEY ( items_item_no )
REFERENCES items ( item_no );
-- ERROR: FK name length exceeds maximum allowed length(30)
ALTER TABLE purchase_order_items
ADD CONSTRAINT purchase_order_items_purchase_order_fk FOREIGN KEY ( purchase_order_order_no )
REFERENCES purchase_order ( order_no );
ALTER TABLE purchase_order
ADD CONSTRAINT purchase_order_sales_person_fk FOREIGN KEY ( sales_person_code )
REFERENCES sales_person ( code );
ALTER TABLE purchase_order
ADD CONSTRAINT purchase_order_supplier_fk FOREIGN KEY ( supplier_id )
REFERENCES supplier ( id );
所以我不确定到底是什么 FK 名称长度太长以及我需要在脚本中更改什么来修复此错误。
Oracle 将标识符限制为 30 个字符,因此
purchase_order_items_purchase_order_fk
需要短路。也许像 poi_purchase_porder_fk
.