У меня есть эта структура типа наследования:
CREATE OR REPLACE TYPE Cuenta_udt AS OBJECT (
IBAN VARCHAR(28),
Saldo FLOAT,
Numero_de_cuenta NUMBER,
Fecha_creacion DATE,
Clientes clientes_array) NOT INSTANTIABLE NOT FINAL;
/
CREATE OR REPLACE TYPE De_ahorro_udt UNDER Cuenta_udt (
Interes FLOAT,
Ultimo_devengo NUMBER ) FINAL;
/
CREATE OR REPLACE TYPE Corriente_udt UNDER Cuenta_udt (
Oficina_bancaria_Codigo NUMBER,
Oficina_bancaria_Direccion VARCHAR(100),
Oficina_bancaria REF Oficina_bancaria_udt ) FINAL;
/
, которая становится этой таблицей:
CREATE TABLE Cuenta OF Cuenta_udt (
IBAN PRIMARY KEY,
Saldo NOT NULL,
Numero_de_cuenta NOT NULL,
Fecha_creacion NOT NULL
) OBJECT IDENTIFIER IS SYSTEM GENERATED;
Теперь я хотел бы определить триггер, который выполняет некоторые действия илинекоторые другие в зависимости от конкретного типа данных (De_ahorro или Corriente) это так.Я пробовал это, но не работает:
CREATE OR REPLACE TRIGGER actualizarSaldo
BEFORE INSERT ON Cuenta
FOR EACH ROW
BEGIN
IF :NEW.Interes IS NOT NULL THEN
RAISE_APPLICATION_ERROR(-20000, 'Soy de ahorro');
ELSE
RAISE_APPLICATION_ERROR(-20001, 'Soy corriente');
END IF;
END;
/
Ошибка:
PLS-00049: неверная переменная связывания 'NEW.INTERES'
Как я могудостигнуть этого?
Я уже пробовал это:
CREATE OR REPLACE TRIGGER actualizarSaldo
BEFORE INSERT ON Cuenta
FOR EACH ROW
BEGIN
IF :NEW IS OF (De_ahorro_udt) THEN
RAISE_APPLICATION_ERROR(-20000, 'Soy de ahorro');
ELSE
RAISE_APPLICATION_ERROR(-20001, 'Soy corriente');
END IF;
END;
/
Но я получаю эту ошибку: "PLS-00049: bad bind variable 'NEW'
"