Подтвердить что ты не робот

Как я могу реализовать условное обновление в Oracle?

Я новичок в oracle и имею проблему с одним из моих SQL-запросов.

Есть 2 пользователя: User1 и User2:

     Tab1               Tab2
    --------            -------- 

    EmpNo               EmpNo
    EmpName             EmpName
    ContactNo           Salary
    Location    

User2 имеет все привилегии в User1.Tab1, и между двумя таблицами нет отношения внешнего ключа.

Проблема:

Я хотел добавить столбец в tab2 "NameDesignation" И я хотел вставить значение в этот столбец после проверки следующего условия:

WHEN User1.Tab1.EmpNo = User2.Tab2.EmpNo THEN
   INSERT INTO Tab2 VALUES (&designation)

Я действительно не знаю, как это сделать, и надеялся на небольшую помощь. Любые мысли?

4b9b3361

Ответ 1

попробуйте следующее:

update user2.tab2.empno t2
set NameDesignation= &designation
where exists (select ''
              from user1.tab1 t1
              where t1.empno=t2.empno)

(инструкция обновлена ​​в соответствии с отредактированным вопросом)

Ответ 2

Вам понадобится набор триггеров,

После вставки или обновления:

CREATE OR REPLACE TRIGGER tab1_after_changed
AFTER INSERT OR UPDATE
    ON tab1
    FOR EACH ROW

BEGIN
    DELETE FROM User2.Tab2 WHERE EmpNo=:NEW.EmpNo;
    INSERT INTO User2.Tab2(EmpNo,EmpName,NameDesignation) 
        VALUES (:NEW.EmpNo,:NEW.EmpName, (SELECT DesignationName FROM Designation where DesignationID=:NEW.DesignationID));
END;

Я просто представил таблицу с Обозначением (номер идентификатора назначения, имя_задания varchar2 (xx)) и Tab1, имеющий обозначение (номер).