CREATE OR REPLACE TRIGGER test
BEFORE INSERT OR DELETE ON test_table
FOR EACH ROW
DECLARE
 lvCnt     number(5);BEGIN
 
     --想得到test_table中的count(id),该如何来写呢?
     select conunt(id) into lvCnt from  test_table;
     --我是象下面那么写,报错说,trigger不能读
     --IF INSERTING THEN
     --INSERT INTO test_table1(num) VALUES(lvCnt);
     --END IF;
END;

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER test
    BEFORE INSERT OR DELETE ON test_table
    FOR EACH ROW
    BEGIN
         IF INSERTING THEN
         INSERT INTO test_table1 (num) (SELECT count(id) FROM test_table WHERE type=:NEW.type);
         END IF;
    END;
      

  2.   

    一开始我写的跟bobo的一样,上面我是笔误。提示错误说:ERROR 位于第 1 行:
    ORA-04091: 表 NETUSER.E_AD 发生了变化,触发器/函数不能读
    ORA-06512: 在"NETUSER.TG_E_STREETS3", line 46
    ORA-04088: 触发器 'NETUSER.TG_E_STREETS3' 执行过程中出错E_AD相当于上面的test_table