[英]Changing keys and foreign keys
我有兩張桌子。 第一個是狗:
oldId name
----- -----
'AX01' Fido
'AX02' Pluto
... ....
另一個稱為服務式:
Id ServicedDog Descripton
--- ------------ ----------
1 'AX01' 'Dog bath'
2 'AX01' 'Dog Vaccined'
...
22 'AX02' 'Dog bath'
...
我們遇到的問題是,我們需要將表狗的oldId列(CHAR(4))轉換為自動遞增的INT 1,並更新服務的表的相應ServicedDog列以具有新值(它是外鍵)。 我遇到的另一個問題是ServicedDog的數據類型是CHAR(4),我將需要將此列的數據類型更改為INT。 請告訴我,這怎么辦? 謝謝
(在沒有看到SHOW CREATE TABLE
的情況下,我正在做出一些猜測。)
現在真的叫oldid
嗎?
-- Add the desired id (and populate it);
-- Replace the existing PK:
ALTER TABLE dogs
ADD COLUMN id SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL,
DROP PRIMARY KEY,
ADD PRIMARY KEY(id)
ADD INDEX(oldid);
-- add new dog_id (but do not populate)
ALTER TABLE serviced
ADD COLUMN dog_id SMALLINT UNSIGNED NOT NULL,
ADD INDEX(dog_id);
-- establish new linkage:
UPDATE serviced
JOIN dogs ON serviced.oldid = dogs.oldid
SET serviced.dog_id = dogs.id;
筆記:
oldid
實際上是該列的當前名稱。 SMALLINT UNSIGNED
); 如果可能還有更多,請更改聲明。 oldid
上保留索引-用於轉換; 您可能要刪除索引,甚至可能刪除列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.