CREATE TRIGGER TRG_email 
BEFORE INSERT  ON email
FOR EACH ROW 
begin SELECT EMAIL_SEQUENCE.NEXTVAL
     INTO :NEW.emid
     FROM DUAL;
End ;
PL/SQL DEVELOPER中执行了,end之后就不走了,也不提示是否创建成功看下面的提示
SQL> CREATE TRIGGER TRG_email
  2  BEFORE INSERT  ON email
  3  FOR EACH ROW
  4  begin SELECT EMAIL_SEQUENCE.NEXTVAL
  5       INTO :NEW.emid
  6       FROM DUAL;
  7  End ;
  8  
  9  
 10  
 11  ;
 12  ;
 13  ;

解决方案 »

  1.   

    CREATE TRIGGER TRG_email 
    BEFORE INSERT  ON email 
    FOR EACH ROW 
    begin SELECT EMAIL_SEQUENCE.NEXTVAL 
        INTO :NEW.emid 
        FROM DUAL; 
    End TRG_email; 
      

  2.   

    SQL> 
    SQL> CREATE TRIGGER TRG_email
      2  BEFORE INSERT  ON email
      3  FOR EACH ROW
      4  begin SELECT EMAIL_SEQUENCE.NEXTVAL
      5      INTO :NEW.emid
      6      FROM DUAL;
      7  End TRG_email;
      8  
      9  
     10  
     11  
     12  
     12  
     12  为什么没反应,一直这样走下去
      

  3.   

         CREATE TRIGGER TRG_email
      2    BEFORE INSERT  ON customer
      3    FOR EACH ROW
      4    begin  SELECT seq_action.NEXTVAL
      5        INTO :NEW.cus_id
      6        FROM DUAL;
      7    End TRG_email;
      8  
      9  /
      

  4.   

    嗯,command窗口里写代码块需要/作为终止符
      

  5.   

    完了怎么用啊提示ORA-00947: 没有足够的值
      

  6.   

    你是不是执行insert的时候,字段没对应上..
      

  7.   

    如果emid 字段希望自增,不想手动输入
    insert into tablename(col1,col2,col3...) values(...)
    注意字段对应好。
    要么就
    insert into tablename values(.....)
    但是emid 值你得随便输入一个数,触发器会用序列值将其覆盖
    没有填写的话会有错误
      

  8.   

    我的意思是你可以填个emid 值,但不管你填什么,都会经过触发器,被重新赋值。所以你随便填一个就好
    不填的话,你得定义插入的字段
      

  9.   

    pstm.setInt(1, 1);直接给的1,其他都没动,但是库中已经有EMID为1的记录了
      

  10.   

    ORA-00001: 违反唯一约束条件 (CALVINSMITH.PK_EMAIL)
      

  11.   

    ..你没给序列赋初始值吧,默认为1
    你找下原表中Emid最大的值是多少。比如为55的话
    drop sequence EMAIL_SEQUENCE;
    create sequence EMAIL_SEQUENCE
    start with 56;
      

  12.   

    DAO 里面用的是 PreparedStatement 编译完了就执行SQL语句从1开始,pstm.setInt(1, 1);  固定的给个1,触发器直接覆盖它的值但是已经有1存在了,在执行直接报错、
    ORA-00001: 违反唯一约束条件 (CALVINSMITH.PK_EMAIL)
      

  13.   

    如16楼所说,重建序列,要赋初值。问题就解决了
    赋的初值要为原表中的emid最大值再加1