假如一张表中已有n条纪录,n非常大(100万条)
,此时插入一行,然后如何取得刚才插入的那一行数据?有没有比较好的办法?

解决方案 »

  1.   

    好办法就是你可以为这张表建一个insert的触发器,把新插入的数据插入另一张表。然后对另一张定期删除心前的记录。
      

  2.   

    哦,刚才忘了说条件,客户不能编写触发器,存储过程等,只能通过SQL语句或OCI编程的方式来取得
      

  3.   

    作不到。你想想你在sql语句里面,你根据什么来判断是否是刚插入的记录?
      

  4.   

    你用max(rowid)查找应该可以,因为刚插入的记录其rowid值在该表中是最大的。我是刚学的,请多多指教!
      

  5.   

    select * from table where rownum<(select count(*)+1 from table) minus select * from table where rownum<(select count(*) from table);不知道行不行
      

  6.   

    1.在USER1.TEST表中增加一字段GETTIME;
    2.在USER1用户下建立触发器:
      CREATE OR REPLACE TRIGGER USER1_TRI.TEST_AI AFTER
      INSERT ON TEST 
      FOR EACH ROW
      DECLARE
      BEGIN
      :NEW.GETTIME := SYSDATE;
      END USER1_TRI.TEST_AI;
    3.查询刚才插入的那一行数据:
    SELECT * FROM TEST WHERE GETTIME =(SELECT MAX(GETTIME) FROM TEST)。
      

  7.   

    我记的可以从ORACLE本身的字典中找到最近执行过的命令,记不清了,明天再说,今晚我查一查
      

  8.   

    说了太多没用,好的方法已经说了出来。
    不切实际就不用想太多了,还是与dba讨论建立触发器吧.