----------Trigger不能编译-----请看第三段
-------1,    建表
drop table DTMP;
create table DTMP
(
  D NUMBER(20) not null,
  P NUMBER(1) not null
)-- 2   创建SEQUENCE
create sequence SQ_ZZZ_ID
minvalue 1
maxvalue 9999999999
start with 21
increment by 1
cache 20;-----3   -----创建trigger,实现自动用Oracle的Sequence 替换dtmp的 字段"D"的值.
CREATE OR REPLACE TRIGGER TRIG_DTMP 
BEFORE INSERT ON DTMP 
FOR EACH ROW 
DECLARE 
BEGIN 
:new.D :=  :SQ_ZZZ_ID.Nextval; 
END TRIG_DTMP; 

解决方案 »

  1.   

    先把报的错误贴出来。
    CREATE OR REPLACE TRIGGER TRIG_DTMP 
    BEFORE INSERT ON DTMP 
    FOR EACH ROW 
    DECLARE 
    BEGIN 
    :new.D :=  :SQ_ZZZ_ID.Nextval; 
    END TRIG_DTMP; 
    红色部分修改成这样看看:
    :new.D :=  SQ_ZZZ_ID.Nextval;
      

  2.   

    谢谢#1楼,这个问题我看到了,谢谢,但还不成。
    错误就是trigger 的前面是红叉子。
      

  3.   

    CREATE OR REPLACE TRIGGER TRIG_DTMP 
    BEFORE INSERT ON DTMP 
    FOR EACH ROW 
    DECLARE 
    v_new_d varchar2(20);
    BEGIN 
    select SQ_ZZZ_ID.Nextval into v_new_d from dual;
    :new.D :=  v_new_d; 
    END TRIG_DTMP; 
      

  4.   

    :SQ_ZZZ_ID前的冒号去掉后,然后要重新编译触发器
    没有其他错误