2014-12-04 60 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