11

当我尝试替换此触发器时,我使用 squirrel 3.2.0:

CREATE OR REPLACE TRIGGER crw_ins_trig
  BEFORE INSERT OR UPDATE ON crew
  FOR EACH ROW
DECLARE

BEGIN
    if (:new.crw_id is null) then
        select crw_id_seq.nextval
        into :new.crw_id
        from dual;
    end if;  
END;
/

我收到消息“请输入参数值。':new' 的值”

当我单击确定时,结果消息是:

Warning:   Warning: execution completed with warning
SQLState:  null
ErrorCode: 17110
Position: 27

Query 1 of 1, Rows read: 0, Elapsed time (seconds) - Total: 0.023, SQL query: 0.023, Building output: 0

在我的应用程序中出现错误"ORA-04098: trigger 'CRW_INS_TRIG' is invalid and failed re-validation"

这和松鼠有关系吗?如果是这样,我该如何解决这个问题?

4

2 回答 2

15

您应该在 SQuirrel 中卸载“sqlparam”插件,之后它不会要求您填写“:paramName”变量的值

于 2011-11-02T19:52:38.877 回答
0

您可能希望在触发器中添加 REFERENCING 行,使其看起来像

CREATE OR REPLACE TRIGGER crw_ins_trig  
  BEFORE INSERT OR UPDATE ON crew  
  REFERENCING NEW AS NEW
              OLD AS OLD
  FOR EACH ROW  
BEGIN  
    if (:new.crw_id is null) then  
        select crw_id_seq.nextval  
        into :new.crw_id  
        from dual;  
    end if;    
END crw_ins_trig;

试试看。如果它不起作用,请尝试使用不同的工具(例如 SQL*Plus、PL/SQL Developer、Toad 等)执行该语句。

分享和享受。

于 2010-12-02T12:06:59.390 回答