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

时间:2009-02-25 07:57:39

标签: oracle oracle10g

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

有2位用户:User1User2

     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)

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

2 个答案:

答案 0 :(得分:12)

试试这个:

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

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

答案 1 :(得分:0)

您需要一组触发器

插入或更新后:

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(数字)的表。