代码之家  ›  专栏  ›  技术社区  ›  Lunivore

如何在启用了闪回存档的情况下迁移数据、添加带约束的新列?

  •  2
  • Lunivore  · 技术社区  · 14 年前

    我目前在一个表中有一个字符串值,我想更改它,以便它引用另一个表。例如,目前我有:

    | Table: Animal       | 
    -----------------------
    | Name      | Class   |
    |-----------|---------|
    | Horse     | Mammal  |
    | Crocodile | Reptile |
    

    我希望这些引用我的新“AnimalClass”表,这样它们看起来像:

    | Table: Animal       | 
    -----------------------
    | Name      | ClassId |
    |-----------|---------|
    | Horse     |    3    |
    | Crocodile |    14   |
    

    我已经创建了我的新表,并设置ClassId没有任何麻烦。

    不幸的是,当我试图在新Id和AnimalClass表之间添加外键约束时,会出现以下错误:

    SQL Error: ORA-55610: Invalid DDL statement on history-tracked table
    

    这是有意义的,因为它使“撤销”无效。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Jon Heller TenG    14 年前

    您使用的Oracle版本是什么(客户机和服务器)?根据此线程,使用旧客户端存在问题: http://forums.oracle.com/forums/thread.jspa?threadID=945177 如果没有其他工作,可以使用DBMS_FLASHBACK_ARCHIVE.DISASSOCIATE_FBA/resassociate_FBA吗?(根据 http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_flashback.htm#BJFFDCEH )