Проверьте все недопустимые зависимости таблиц и динамически перекомпилируйте их - PullRequest
0 голосов
/ 14 июня 2019

Я изменил два столбца таблицы, и теперь у меня недопустимые зависимости, мне нужно проверить их все и динамически перекомпилировать

Первоначально это было

CREATE TABLE AHO_CUENTA_AHORRO 
(
    ID_CUENTA NUMBER(8) NOT NULL,
    ID_SOCIO NUMBER(12) NOT NULL,
    ESTADO VARCHAR2(1) NOT NULL,
    TASA_INTERES NUMBER(3,1) NOT NULL,
    FECHA_APERTURA DATE NOT NULL,
    FECHA_CANCEL DATE,
    SALDO_BLOQUEADO NUMBER(12) NOT NULL,
    SALDO_DISPONIBLE NUMBER(12) NOT NULL,

    CONSTRAINT PK_ID_AHORRO PRIMARY KEY (ID_CUENTA)
);

ALTER TABLE AHO_CUENTA_AHORRO 
    ADD CONSTRAINT SOCIO_CUENTA_AHORRO_FK
        FOREIGN KEY (ID_SOCIO)
        REFERENCES SOC_SOCIO (ID_SOCIO);

ALTER TABLE AHO_MOVIMIENTOS_CUENTA 
    ADD CONSTRAINT CUENTA_AHORRO_MOVIMIENTOS
        FOREIGN KEY (ID_CUENTA)
        REFERENCES AHO_CUENTA_AHORRO (ID_CUENTA);

и теперь я добавил это

ALTER TABLE AHO_CUENTA_AHORRO
ADD (
SALDO_REAL  NUMBER(12) DEFAULT 0 NOT NULL,
ID_TARIFARIO NUMBER(15) DEFAULT 1 NOT NULL,
 CONSTRAINT FK_TARIFA FOREIGN KEY (ID_TARIFARIO) REFERENCES TARIFARIO(ID))

1 Ответ

5 голосов
/ 14 июня 2019

Чтобы определить недопустимые объекты, вы можете выполнить запрос ниже:

SELECT * FROM all_objects WHERE status = 'INVALID';

Затем вы можете вручную скомпилировать их, используя DDL ниже:

ALTER <object_type> <object_name> COMPILE;

Например:

ALTER VIEW some_invalid_view COMPILE;

Этот подход может работать хорошо, если у вас есть только несколько недопустимых объектов без многих зависимостей.

Другой подход заключается в вызове процедуры ниже, которая компилирует недопустимые объекты в указанной схеме в порядке зависимости.

DBMS_UTILITY.compile_schema(schema => '<your_schema>', compile_all => false);

compile_all => false компилирует только недопустимые объекты.

https://docs.oracle.com/database/121/ARPLS/d_util.htm#ARPLS73226

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...