gpt4 book ai didi

MySQL 默认值作为其他字段的值

转载 作者:IT老高 更新时间:2023-10-29 00:16:42 26 4
gpt4 key购买 nike

我可以,如果可以的话,如何将 MySQL 表中字段的默认值设置为另一个字段的值?

事情是:我有数据,每个数据对象在表中都有它的ID。但是,我希望可以重新排列数据,更改它们的排序索引,而不更改它们的 ID。因此,字段 sort_num 应默认设置为自动递增索引字段 ID 的值。

提前致谢!

最佳答案

我看到了两种可能的解决方案:

1.可能性:

如果未设置,您可以使用函数简单地忽略 sort_num:

`SELECT * FROM mytable ORDER BY coalesce(sort_num, id)`

coalesce() 返回第一个非空值,因此如果您确实需要重新排序项目,您可以插入 sort_num 的值。

<强>2。可能性:

你写了一个触发器,如果​​插入语句中没有设置,它会自动设置值:

DELIMITER //

CREATE TRIGGER sort_num_trigger
BEFORE INSERT ON mytable
FOR EACH ROW BEGIN
DECLARE auto_inc INT;
IF (NEW.sort_num is null) THEN
-- determine next auto_increment value
SELECT AUTO_INCREMENT INTO auto_inc FROM information_schema.TABLES
WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME = 'mytable';
-- and set the sort value to the same as the PK
SET NEW.sort_num = auto_inc;
END IF;
END
//

(受 this comment 启发)

但是,这可能会遇到并行化问题(同时插入多个查询)

关于MySQL 默认值作为其他字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6377977/

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