2016-09-26 4 views
0

Напишите триггер, чтобы рассчитать и распечатать разницу между старой и новой зарплатой при обновлении зарплаты.Может кто-нибудь помочь мне понять, как написать триггер в dbms?

Я пробовал следующие утверждения как в oracle, так и в mysql. , но всплывающие окна с ошибкой, такие как недействительная спецификация триггера. Может кто-нибудь помочь мне уточнить, что является основным распространенным синтаксисом для триггера в любых dbms?

create trigger update_salary_trig 
    after insert on Employee 
    for each row 
    if(new.salary<>old.salary) 
    new.salary=new.salary-old.salary 
    print new.salary; 
+0

bro посмотреть в руководствах – Drew

ответ

0

В оракуле вы можете написать это двумя способами. Также вам нужно внимательно прочитать документ. Trigger

Проверьте ниже способов сделать это:

1)

CREATE OR REPLACE TRIGGER update_salary_trig 
AFTER INSERT ON Employee 
FOR EACH ROW 
declare 
revised_sal number; 
begin 

    If(:new.salary <> :old.salary) then 
    revised_sal := :new.salary - :old.salary;  
    End if; 

    dbms_output.put_line(revised_sal); 
    end; 

2) Предпочтительные

CREATE TRIGGER update_salary_trig 
AFTER INSERT ON Employee 
FOR EACH ROW 
when (new.salary <> old.salary) 
DECLARE 
    sal_new number; 
begin 
    sal_new := :new.salary - :old.salary; 
    dbms_output.put_line(sal_new); 
    end; 

Примечание:

Вы не можете изменить значение :new.salary directl y путем назначения :new.salary := :new.salary - :old.salary; - Это запрещено.

 Смежные вопросы

  • Нет связанных вопросов^_^