gpt4 book ai didi

MYSQL 更改枚举值

转载 作者:可可西里 更新时间:2023-11-01 07:57:55 25 4
gpt4 key购买 nike

在我名为“stocktakings”的表中,有一个名为“status”的 ENUM 类型的列。 “状态”有以下字段:

  • '待定'
  • '正在处理'
  • '失败'
  • '成功'

我想将值更改为:

  • '准备搬迁'
  • '搜索货架位置'
  • '库存更新成功'
  • '库存更新失败'
  • '更新库存'

我尝试了以下命令:

ALTER TABLE `stocktakings` MODIFY `stocktakings.status` 
`stocktakings.status` ENUM(
`ready_for_relocation`,
`search_shelf_location`,
`stock_update_succeeded`,
`stock_update_failed`,
`updating_stock`
);

没用。有什么想法吗?

最佳答案

您不能只从列定义中删除旧枚举值。否则,将出现无法挽回的数据丢失(所有字段可能变为空白)。这将是一个多步骤过程:

将新的枚举值添加到现有列定义中。此外,枚举值用单引号括起来(不是反引号)

ALTER TABLE `stocktakings` MODIFY `stocktakings`.`status` ENUM(
'Pending',
'Processing',
'Failed',
'Succeeded',
'ready_for_relocation',
'search_shelf_location',
'stock_update_succeeded',
'stock_update_failed',
'updating_stock'
);

现在,运行一个Update 查询来相应地更新所有枚举值:

UPDATE `stocktakings` 
SET status = CASE status
WHEN 'Pending' THEN 'ready_for_relocation'
WHEN 'Processing' THEN 'search_shelf_location'
WHEN 'Failed' THEN 'stock_update_failed'
WHEN 'Succeeded' THEN 'stock_update_succeeded'
END

现在,Alter Table 并删除旧的枚举值。

ALTER TABLE `stocktakings` MODIFY `stocktakings`.`status` ENUM(
'ready_for_relocation',
'search_shelf_location',
'stock_update_succeeded',
'stock_update_failed',
'updating_stock'
);

关于MYSQL 更改枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53078318/

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