我的数据库中有一个表中的数据被清空了,我想用备份的dmp文件把被删除的表中的数据恢复过来。但是问题就来了:
    我用Imp命令或者是PL/SQL恢复被清空的表时,表中的主键这一列不是原来数据(主键是用的sequences),而是sequences继续向上的增长值。
    各位老大,有没有一种方法在我恢复被清空的表时,用了sequences的列也恢复成被清空前一样的数据。

解决方案 »

  1.   

    数据导入完成后,
    select max(主键) from 表。
    修改Sequence的初始值等于max(主键)+1。
    只能自己干,oracle是不会自动干的。
      

  2.   


    不,懂;帮,顶;学,习;赚,分。
    虽然这么回贴可能会被删除。
    谁他妈的删除了就是个王八蛋。
    强烈抗议CSDN这种即当婊子又想立贞洁牌坊的恶劣行为!!!
    有本事,就封杀我!!!理由在这里:
    他妈的一帮管理员有神经病啊???
    http://topic.csdn.net/u/20110422/10/1a381057-7a7b-41d9-8969-ad1f5b77f24a.html?38665
    最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
    如果有多表,表之间如何关联?
    如何更有效地在SQL Server论坛上提问
    http://topic.csdn.net/u/20100716/19/6f132f16-20e4-418c-8dee-b99d5f86d320.html?75910
    [code=SQL]
      

  3.   

    你是怎么恢复的?
    先把原来的表drop掉 再把备份的dmp用full=y 导进去 肯定没有你说的问题吧?
      

  4.   

    sequences 怎么用的?用的触发器么?那导入前把触发器禁用了,导入之后再恢复触发器就可以了
      

  5.   


    我原来是用delete from talbe;这样的方法把表中的数据清空,然后在用imp这样导入的数据,用你说的方法应该就没有问题,我试试,非常感谢!!!