你没有为id字段指定插入值,所以会报错.使用序列
SQL> create sequence a_seq
  2  start with 1
  3  increment by 1;序列已创建。
sql>insert into table1 select a_seq.nextval,department,name where name='111';

解决方案 »

  1.   

    楼上这位大哥,我上面写的是测试数据,也许name='222'也不一定,随便写的。表名也不一定是是table1和table2,测试而已,为了说明问题。
    重点是怎么样用那样的语句写入自动增长的id
      

  2.   

    id             number   自动增长列而且不为空ORACLE没有自动增长的字段,得用序列来实现
    具体的方法 tsj68(tsj) 已经做到了。
      

  3.   

    回复人: tsj68(tsj) ( ) 信誉:100  
    如果table1的用户name1,而table2的用户是name2,都有相应的权限,那sql语句又应该怎么该?
      

  4.   

    回复人: LGQDUCKY(飘) ( ) 信誉:115  
    如果table1的用户name1,而table2的用户是name2,都有相应的权限,那sql语句又应该怎么该?
      

  5.   

    CREATE SEQUENCE idNO INCREMENT BY 1 START WITH 1 
        MAXVALUE 1.0E28 MINVALUE 1 CYCLE 
        NOCACHE NOORDER;
    /
    CREATE OR REPLACE TRIGGER table1_tri
    BEFORE INSERT ON table1
    FOR EACH ROW
    BEGIN
        SELECT IDno.NEXTVAL INTO :NEW.id FROM DUAL;
    END;
    /insert into table1(department,name) 
      select department,name from table2 where name='111';