一个ORACLE数据库表,没有主键,当插入一条或多条记录成功后
如何判断新插入的记录?有没有相关的SQL语句可以实现比如插入一条insert into table values('a','b','c','d','ed')成功后,如何从数据库判断新插入的这一条内容

解决方案 »

  1.   

    另外table表的数据记录条数很多
      

  2.   

    select count(*)一下,1的话就是新插入的,不是的话就是原来就就插入过.
      

  3.   

    比如我有一个表user 里面有几条记录USERNAME   ROLE
    aa         bb
    cc         dd
    我执行INSERT INTO USER VALUES('AA','DD') ,该表无任何主键,不管数据是否重复
    执行以后增加了一条记录
    USERNAME   ROLE
    aa         bb
    cc         dd
    AA         DD
    那么我如何知道我新插入的这条数据的内容呢?用SQL语句
      

  4.   

    用exists判断记录是否存在,如果存在,就不插入,如果不存在就插入
      

  5.   

    这样的话,估计没什么好的办法,不过有一个可以满足你的,那就是只有在create table时加上ROWDEPENDENCIES ,让你每插入的一个行,都有自己独立的ORA_ROWSCN,你通过查询ora_rowscn最大的就是你最进一次插入的数据。举例:
    create table test (a number,b number) rowdependencies;
    insert into test values(2,2);
    commit;
    insert into test values(3,3);
    commit;
    insert into test values(1,1);
    commit;
    select ora_rowscn ,a,b from test;ora_rowscn最大的就是你最后一次插入的记录!
      

  6.   


    这条可行 主要是用的Oracle的锁机制进行判断的
      

  7.   

    开启审计
    audit insert on 此表的用户.table whenever successful;
      

  8.   

    trigger 里加 exists来判断就可以的
      

  9.   

    审计消耗系统的资源比较大,最好还是exists判断以下是否存在,如果存在删除就可以了。
      

  10.   

    select * from table  order by rowid desc;
    这个是按照插入顺序排序
    select * from table  where rowid = (select max(rowid) from table)
    这个是找到最新一条插入记录。。
    楼主还可以给表增加一个字段,insert_date每次插入的时候将sysdate插入,这样就不怕找不到最新的记录了。