gpt4 book ai didi

mysql - MySQL 中的自修补主键,我可以做到,但是我该如何处理 id=1 的情况

转载 作者:行者123 更新时间:2023-11-29 13:03:38 27 4
gpt4 key购买 nike

由于我不想进入的原因,我对表有一个“ self 修补”pkey id 要求。我的意思是新的插入 id 必须始终是可能的最低 id,并且该表故意保留没有 auto_increment

这就是我目前所拥有的

INSERT INTO thefile (
file_id,
fullpathname,
filesize
) VALUES (
(SELECT MIN(t1.file_id+1) FROM thefile t1 LEFT JOIN thefile t2 ON t1.file_id + 1 = t2.file_id WHERE t2.file_id IS NULL),
'/some/path/file',
24576
);

这个想法是,它会填充数据库并始终尝试使用最低的可用 ID(即随着时间的推移,假设 row file_id=3 被删除:它将立即插入下一行at file_id=3 - - 引用完整性不相关是有原因的)

现在它工作得很好,只是如果thefile有零行,或者thefile count(*),它不适用于thefile表= 零

处理开销对我来说非常重要:如果count=0,始终保证file_id为1,最低的处理开销是多少

最佳答案

... it works brilliantly except that it doesn't work on thefile table if thefile has zero rows, or thefile count(*) = zero

更改:

SELECT MIN(t1.file_id+1) 
FROM thefile t1
LEFT JOIN thefile t2
ON t1.file_id + 1 = t2.file_id
WHERE t2.file_id IS NULL),

:

SELECT coalesce( MIN( t1.file_id ), 0 ) + 1 
FROM thefile t1
LEFT JOIN thefile t2
ON t1.file_id + 1 = t2.file_id
WHERE t2.file_id IS NULL),

关于mysql - MySQL 中的自修补主键,我可以做到,但是我该如何处理 id=1 的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23018040/

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