У меня проблема с триггером.После создания триггера мне выдается сообщение
BD1.UTILIZADOR находится в мутации, триггер не может прочитать или выполнить
У меня есть эта таблица
create table UTILIZADOR
(
U_ID NUMBER(6) not null,
U_NOME VARCHAR2(60) not null,
U_SEXO VARCHAR2(10) not null,
U_IDADE NUMBER(3) not null,
U_ALTURA NUMBER(3) not null,
U_PESO NUMBER(6) not null,
U_IMC NUMBER(2,2),
U_PRIVILEGIOS NUMBER(1) not null,
U_PASSWORD VARCHAR2(10) not null,
constraint PK_UTILIZADOR primary key (U_ID)
);
и если я сделаю это:
INSERT INTO UTILIZADOR (U_ID,U_NOME,U_SEXO,U_IDADE,U_ALTURA,U_PESO,U_PRIVILEGIOS,U_PASSWORD) VALUES (1,'my name','Male',32,174,74000,0,'password');
, а затем
SELECT * FROM UTILIZADOR;
Я могу видеть, что все как ожидалось.
То, что я хочу сделать, этопри вставке или обновлении U_ALTURA или U_PESO поле U_IMC автоматически обновляется / вставляется.
Вот что, если сделано:
CREATE OR REPLACE TRIGGER CALCULA_IMC
AFTER INSERT OR UPDATE OF U_ALTURA, U_PESO ON UTILIZADOR
FOR EACH ROW
BEGIN
UPDATE UTILIZADOR
SET U_IMC = (U_PESO / 1000) / (POWER(U_ALTURA / 100,2));
END;
/
Может кто-нибудь сказать, что я делаю неправильно?