【问题标题】:PL/SQL can't get multiple rows to update when a trigger fires触发器触发时,PL/SQL 无法更新多行
【发布时间】:2018-05-24 09:30:59
【问题描述】:

我正在尝试创建一个触发器以在另一个字段更新时更改一个字段。这是我当前的触发器,如果​​我只更新一行,它目前可以工作,但如果我更新多个,它就不起作用。我该如何解决这个问题?

顺便说一句,我正在使用 oracle。

Create or replace trigger br_change
                after update on employees
                Declare 
                    cursor pls_work is
   select e.employeeID, e.departmentID, ep.billrate, jobrank,  salary  
   from employees e full join employeeproject ep on e.employeeID
    = ep.employeeID full join jobtypes jt on jt.jobname = e.title;
                empID number(3);
                dpID number(1);
                br number(4);
                jr number(1);
                s number(12);   
            BEGIN
                open pls_work;  
                fetch pls_work into empID, dpID, br, jr, s;
                update employeeproject set billrate = ((s/2000)+(jr*10)) where empID = employeeID;
                dbms_output.put_line('Updating billrate to match changes');
        END;
        /

【问题讨论】:

  • “它不起作用”没有帮助。告诉我们实际发生了什么——一个错误,错误的结果?我想您最终会得到错误的账单费率值。包含样本数据和当前/预期结果可能会有所帮助。

标签: sql oracle plsql triggers sql-update


【解决方案1】:

如果您的 UPDATE 语句影响多行,您需要添加 FOR EACH ROW

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多