代码之家  ›  专栏  ›  技术社区  ›  leora Matt Lacey

在数据库重构期间映射ID的最简单方法

  •  2
  • leora Matt Lacey  · 技术社区  · 14 年前

    医嘱ID 订单 交易 . 我要所有有桌子的桌子 医嘱ID 列现在有一个

    这是完整的。我现在需要填充 事务ID 列。我今天有个地图 医嘱ID 事务ID 所以我想看看最快的方法,我可以去填充新的 事务ID 列(我应该通过代码、SQL查询等来实现这一点吗??)

    update childTable CT
    set transactionId = MapFromOrderId(CT.OrderId)
    

    有什么建议吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Tom H zenazn    14 年前

    我会用SQL代码:

    UPDATE MT
    SET
        transaction_id = MAP.transaction_id
    FROM
        My_Table MT
    INNER JOIN My_Map MAP ON
        MAP.order_id = MT.order_id
    

    SELECT
        *
    FROM
        My_Table
    WHERE
        transaction_id IS NULL
    
        2
  •  1
  •   HLGEM    14 年前

    过程通常是:

    • 向每个子表添加transctionId。 基于到的联接填充 映射表(您确实存储了 orderid和
    • 然后为创建FK 事务,将fk放到 列。
    • 重复。
    • 适当地

    我肯定会在一个脚本中这样做,这样在开发和QA测试之后移植到prod就很容易了。

    在prod上,您需要在数据库处于单用户模式时执行此操作,以防止在流程转换时添加新订单。