gpt4 book ai didi

mysql - 更改键和外键

转载 作者:行者123 更新时间:2023-11-29 19:16:31 26 4
gpt4 key购买 nike

我有两张 table 。第一个是狗:

oldId   name
----- -----
'AX01' Fido
'AX02' Pluto
... ....

另一个称为服务:

Id  ServicedDog  Descripton
--- ------------ ----------
1 'AX01' 'Dog bath'
2 'AX01' 'Dog Vaccined'
...
22 'AX02' 'Dog bath'
...

我们遇到的问题是,我们需要将表 dogs 的 oldId 列 (CHAR(4)) 转换为自动递增的 INT 列,并更新服务表的相应 ServicedDog 列以获取新值(它是一个外部值) key )。我遇到的另一个问题是 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 确实是该列的当前名称。
  • 假设狗的数量不超过 64K(SMALLINT UNSIGNED);如果您可能有更多声明,请更改声明。
  • oldid上保留索引——用于转换;您可能想删除索引,甚至删除列。

关于mysql - 更改键和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42655131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com