解决方案 »

  1.   

    insert into YTO_ORDERDETAIL_HISTORY_TABLE select * from YTO_ORDERDETAIL_TABLE where PRODUCTNO=:new.PRODUCTNO ;
    两个表的机构不是完全一致
    需要将字段都列出来
    insert into tablea(c1,c2,c3,c4……)
    select c1,c2,c3,c4……
    from tableb
    where ……
      

  2.   

    lz你的倒数第二行两个where你造吗
      

  3.   


    我不知道该怎么说我这个低级错误。
    非常感谢,编译通过了。
    并且触发器工作了。
    但是写入系统当前时间并没有生效。insert into YTO_ORDERDETAIL_HISTORY_TABLE select * from YTO_ORDERDETAIL_TABLE where  ***
    你这往历史表插入的数据是从YTO_ORDERDETAIL_TABLE这个表取的,没有用到current_timestamp 这个啊
    btw,我也没怎么用过触发器哈,而且我们开发木有建触发器的权限,不能测试,猜你可以把字段展开,把这个字段单独写一下
      

  4.   

    成功了。
    代码如下:
    create or replace trigger TRG_YTO_ORDERDETAIL_TABLE_ROW
    before insert on YTO_ORDERDETAIL_TABLE
    for each row
    begin
    :new.import_time:=current_timestamp;
    insert into YTO_ORDERDETAIL_HISTORY_TABLE(PRODUCTNO,PARTID,PARTNO,SUPPLIERNO,ORG,IMPORT_TIME) select PRODUCTNO,PARTID,PARTNO,SUPPLIERNO,ORG,IMPORT_TIME from YTO_ORDERDETAIL_TABLE where PRODUCTNO=:new.PRODUCTNO ;
    delete from YTO_ORDERDETAIL_TABLE where  PRODUCTNO=:new.PRODUCTNO ;
    end TRG_YTO_ORDERDETAIL_TABLE_ROW;
    谢谢lizzie贝儿的帮助!