2014-12-04 35 views
2

我已链接表,playersplayerRegSeason。它们通过playerID链接,这是players的主键,并且处于奇怪的非数字形式。我想这样做,所以所有新条目都有独特的自动增量playerID s。如果我将列更改为自动递增,它会更改所有当前的playerID s,但我会保留这些关系。有没有办法改变playerID列,所以它会自动更新playerRegSeason同时更改两个表上的列

+1

您正在使用什么版本的SQL请求

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

? – Dijkgraaf 2014-12-04 18:46:57

+0

为什么不创建一个名为intID的新列。然后使用自动增量器创建id。举例来说,playerID是ABC1234。您可以保留所有现有ID,因为它们已经存在。在你的代码中,基本上可以说新玩家的playerID是ABC +自动增长器值。这是否使感官 – logixologist 2014-12-04 18:52:50

回答

1

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

  1. 创建一个自动增量到players表的新列并填充它。
  2. 添加到playerRegSeason列允许它是NULL最初
  3. 更新在playerRegSeason新列指向新playerID列。
  4. 变更列在playerRegSeason不允许空
  5. 添加一个新的外交约束playerRegSeason
  6. 删除旧的外来约束
  7. 删除旧的ID两个表&洋田。

编辑:第3步 作为拟订但是确切的语法可能会因SQL的版本而异

+0

对不起,但你可以详细说明步骤3? – user2884621 2014-12-04 21:18:51

+0

没问题,我已经添加到答案。 – Dijkgraaf 2014-12-04 21:23:53