Oracle Or SQL SErveranyway , it's not so difficult .create table seq_ta ( seq number)
insert into seq_ta values ( 0)create a trigger on mytable , while insert 
select seq into variable from seq_ta
:new.autoid = variable + 1
update seq_ta set seq = seq + 1
总之,用trigger很容易完成

解决方案 »

  1.   

    请问black_snail(●龙飞虎○) 
    触发器的while是如何实现的?
      

  2.   

    触发器的语法也是PL/SQL,和function , store procedure 是一样的.所以WHILE <condition> 
    LOOP
       <executable statement(s)>
    END LOOP;
      

  3.   

    oracle里建立一个序列,跟表挂钩就可以了
      

  4.   

    呵呵,black_snail(●龙飞虎○) 如果你有时间麻烦帮我把这个Oracle语句写出来,多谢多谢!:)
      

  5.   

    不能建序列。现在的问题是,我的mssql系统要与对方的Oracle系统做一个接口,人家不允许我建序列:(这个东西要是放在mssql里实现,也实现得了,可是我不想那么做,因为会降低mssql服务器的效率。
      

  6.   

    今天要走了,请大家帮帮我。硬是不行,就只好在mssql里面建个identity的中间表了。:)
      

  7.   

    Oracle上没有自增字段,可以使用索引和触发器来达到此目的
    第一步:创建SEQUENCE
    create sequence s_country_id increment by 1 start with 1 maxvalue 999999999;
    第二步:创建一个基于该表的before insert 触发器,在触发器中使用该SEQUENCE
    create or replace trigger bef_ins_t_country_define
    before insert on t_country_define
    referencing old as old new as new for each row
    begin
    new.country_id=s_country_id.nextval;
    end;
      

  8.   

    1.先创建序列USERID  用户序列号
    --
    CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1 
        MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE 
        NOCACHE NOORDER2.创建触发器USERADD 会员触发器
    --
    CREATE OR REPLACE TRIGGER USERADD
    BEFORE INSERT ON MEMBERRG
    FOR EACH ROW
    BEGIN
        USERID.NEXTVAL INTO :NEW.NUM FROM DUAL;
    END;
      

  9.   

    create or replace trigger trdemo
    before insert on t_name ln number for each row; 
    begin
    select max(id) into ln from t_name;
    new.id=ln+1;
    end;
      

  10.   

    当一条insert语句插入多条记录的时候,不知道应该怎么办。
      

  11.   

    insert into mytable(itemid) 
    select itemid from mytable这个在 SQL Server 里 Trigger 也不能实现!
      

  12.   

    playyuer说的对。不过,至少在mssql里还能用游标来处理,或者插入到临时表。在oracle里就不知道怎样做好了。
      

  13.   

    结合大力提供的第二种方法,用一个笨办法暂时解决了:新建一个流水号表,在触发器里面,每次insert的时候,在每条被insert记录触发前从流水号表得到流水号并赋给被插入记录,然后update流水号表将流水号加一,如此循环。这样的话,如果insert into table(b) select b from table;有一千条记录,就得1000次select流水号表和1000次update流水号表。我想应该还有我不知道的更好的办法。此帖过两天结。