我有两张桌子。第一个是狗:
oldId name
----- -----
'AX01' Fido
'AX02' Pluto
... ....
和另一个名叫serviced:
Id ServicedDog Descripton
--- ------------ ----------
1 'AX01' 'Dog bath'
2 'AX01' 'Dog Vaccined'
...
22 'AX02' 'Dog bath'
...
我们遇到的问题是我们需要将表狗的oldId列(CHAR(4))转换为自动递增的INT,并更新服务的表的相应ServicedDog列以获得新值(它是一个外来的键)。我遇到的另一个问题是ServicedDog的数据类型是CHAR(4),我需要将此列的数据类型更改为INT。请告诉我,怎么办呢? 感谢
答案 0 :(得分:0)
(没有看到pkg_calc.run_xyz_job()
你所拥有的,我正在做一些猜测。)
现在真的叫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
的索引 - 用于转换;你可能想要删除索引甚至列。