create table tests
(id integer,
cur_date varchar2(20))
create or replace trigger sd
  before insert    on  tests
  for each rowbegin
     select to_char(sysdate,'yyyy-mm') into :tests.cur_date from dual;
      end;

解决方案 »

  1.   

    create or replace trigger sd
      before insert on tests
      for each rowbegin
      select to_char(sysdate,'yyyy-mm') into :tests.cur_date from dual;
      end;
    错误见红色部分,
      

  2.   

    select to_char(sysdate,'yyyy-mm') into :tests.cur_date from dual;
    你以前玩什么数据库的  这个写法太牛了
    你别告诉我你想通过这个语句往tests里插数据啊
      

  3.   

    SQL> create table tests
      2  (id integer,
      3  cur_date varchar2(20));
     
    Table created
     
    SQL> 
    SQL> create or replace trigger sd
      2    before insert on tests
      3    for each row
      4  
      5  begin
      6    select to_char(sysdate,'yyyy-mm') into :new.cur_date from dual;
      7    end;
      8  /
     
    Trigger created
     
    SQL> INSERT INTO tests(ID)VALUES(1);
     
    1 row inserted
     
    SQL> SELECT * FROM tests;
     
                                         ID CUR_DATE
    --------------------------------------- --------------------
                                          1 2010-08
     
    SQL> 
      

  4.   

    哦,是了,那个是new,这个地方new是什么意思啊
      

  5.   

    最后补充下,找到了资料
    定义:
    create trigger biufer_employees_department_id
     before insert or update
      of department_id
      on employees_copy
     referencing old as old_value
         new as new_value
     for each row
     when (new_value.department_id<>80 )
    begin
     :new_value.commission_pct :=0;
    end;
    /Referencing 子句:
    执行DML语句之前的值的默认名称是 :old ,之后的值是 :new
    insert 操作只有:new
    delete 操作只有 :old
    update 操作两者都有referencing子句只是将new 和old重命名为new_value和old_value,目的是避免混淆。比如操作一个名为new的表时。
    作用不很大。
      

  6.   


    :new类似于sql server的inserted表
    :old类似于sql server的deleted表