同时改变两个表上的列

时间:2014-12-04 18:44:15

标签: sql alter

我已将表格playersplayerRegSeason关联起来。它们由playerID链接,playersplayerID的主键,并且是一种奇怪的非数字形式。我想这样做所有新条目都有唯一的自动递增playerID。如果我将列更改为自动递增,则会更改所有当前playerRegSeason,我可以使用它,但是我失去了与playerID的关系。有没有办法改变playerRegSeason列,以便它会在{{1}}中自动更新?

1 个答案:

答案 0 :(得分:1)

通常你会分阶段做得更好。

  1. 创建一个新列,并自动增加到players表并填充它。
  2. playerRegSeason添加列,使其最初为NULL
  3. 更新playerRegSeason中的新列以指向新的playerID列。
  4. 更改playerRegSeason中的列以禁止空值
  5. playerRegSeason
  6. 添加新的外部约束
  7. 删除旧的外部约束
  8. 删除旧ID&两个表中的外国字段。
  9. 编辑: 按要求详细说明第3步

    UPDATE playerRegSeason s
    INNER JOIN players p ON s.playerID = p.playerID
    SET s.NewPlayerID =  p.NewPlayerID
    

    但是,确切的语法可能会有所不同,具体取决于SQL的版本