问题 如何在Oracle中实现条件更新?


我是oracle的新手,并且遇到了我的一个SQL查询问题。

有2个用户: User1 和 User2

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

    EmpNo EmpNo
    EmpName EmpName
    ContactNo Salary
    位置

User2具有User1.Tab1中的所有权限,并且两个表之间没有外键关系。

问题:

我想在tab2中添加一列“NameDesignation“我想在检查以下条件后在此列中插入值:

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

我真的不知道该怎么做,并希望得到一些帮助。有什么想法吗?


6344
2018-02-25 07:57


起源



答案:


尝试这个:

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

(更新语句以匹配编辑的问题)


12
2018-02-25 08:23





你需要一组触发器,

插入或更新后:

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;

我只想象一个带有Designation(DesignationID号,DesignationName varchar2(xx))和Tab1具有DesignationID(数字)的表。


0
2018-04-22 13:45