Как исправить ОШИБКУ: длина имени FK превышает максимально допустимую длину (30) в SQL Developer Data Modeller

Я пытаюсь превратить логическую модель моей базы данных в сценарий DDL, но я не знаю, как исправить эту ошибку в сценарии DDL или Data Modeller: -- ОШИБКА: длина имени FK превышает максимально допустимую длину (30) Кажется, он основан на первичном ключе моей соединительной таблицы, который состоит из двух внешних ключей из двух соседних таблиц.

Я попытался изменить имена первичных ключей в соседних таблицах, но когда я пытаюсь сгенерировать НОВЫЙ сценарий DDL с помощью Data Modeler, он по-прежнему генерирует старый сценарий.

Вот разделы кода, которые создают 3 таблицы и связывают их вместе:

    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 слишком длинная и что мне нужно изменить в сценарии, чтобы исправить эту ошибку.


person murplepunky    schedule 11.04.2019    source источник


Ответы (1)


Oracle ограничивает длину идентификаторов 30 символами, поэтому purchase_order_items_purchase_order_fk необходимо сократить. Возможно, что-то вроде poi_purchase_porder_fk.

person Gordon Linoff    schedule 11.04.2019
comment
Спасибо за вашу помощь. Если я изменю эту строку, мне придется что-то менять? - person murplepunky; 11.04.2019
comment
@мурплпанки . . . Я так не думаю. Я думаю, что другие идентификаторы в порядке, и этот идентификатор больше нигде не упоминается. - person Gordon Linoff; 11.04.2019