gpt4 book ai didi

mysql - 如何根据列更改主键以具有不同的 Auto_Increment

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:54 25 4
gpt4 key购买 nike

我有一个名为 q_locations 的表。

 CREATE TABLE `q_locations` (
`id` int(11) NOT NULL,
`name` varchar(300) NOT NULL,
`standalone` bit(1) NOT NULL DEFAULT b'0',
UNIQUE KEY `id` (`id`),
KEY `standalone` (`standalone`)
)

我希望“id”在 standalone=0 时从 0 开始递增,而在 standalone=1 时从 1000 开始递增,是否可以这样做以及如何做到这一点?

最佳答案

这是可能的,但不是自动的。传统的方法是使用触发器来设置值。

但是,我认为您不应该走这条路。自动递增的主键不应该有关联的意义。它不是其他信息的编码;它只是分配给一行的数字(通常按插入顺序排列,尽管可能存在间隙)。

如果您想枚举standalone 的值,请在查询中而不是在主键列中这样做。

编辑:

触发器看起来像这样:

DELIMITER $$
CREATE TRIGGER trigger_insert_q_locations
BEFORE INSERT ON q_locations
FOR EACH ROW
BEGIN
SELECT coalesce(max(id) + 1, (case when standalone = 0 then 0 else 1000 end)) into NEW.id
FROM q_locations
WHERE standalone = NEW.standalone;
END$$

请注意,这会处理 insert。如果 standalone 的值在记录上更新,数据将乱七八糟。

关于mysql - 如何根据列更改主键以具有不同的 Auto_Increment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757476/

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