gpt4 book ai didi

sqlite - SQLITE填充值具有唯一的随机表

转载 作者:行者123 更新时间:2023-12-03 18:36:48 25 4
gpt4 key购买 nike

我想创建一个表,该表具有唯一且限制为某个值的字段。可以说限制为100,表已满,我删除了一个随机行,当我创建一个新行时,它具有以前释放的值。
它不必是世界上最快的东西(限制很小),我只想在数据库中实现它。
有任何想法吗?

最佳答案

该解决方案可以在触发器中完成所有操作,因此您只能使用普通的INSERT。

对于表本身,我们使用一个自动递增的ID列:

CREATE TABLE MyTable(ID INTEGER PRIMARY KEY, Name);


我们需要另一个表来临时存储ID:

CREATE TABLE moriturus(ID INTEGER PRIMARY KEY);


和触发器:

CREATE TRIGGER MyTable_DeleteAndReorder
AFTER INSERT ON MyTable
FOR EACH ROW
WHEN (SELECT COUNT(*) FROM MyTable) > 100
BEGIN
-- first, select a random record to be deleted, and save its ID
DELETE FROM moriturus;
INSERT INTO moriturus
SELECT ID FROM MyTable
WHERE ID <> NEW.ID
ORDER BY random()
LIMIT 1;

-- then actually delete it
DELETE FROM MyTable
WHERE ID = (SELECT ID
FROM moriturus);

-- then change the just inserted record to have that ID
UPDATE MyTable
SET ID = (SELECT ID
FROM moriturus)
WHERE ID = NEW.ID;
END;

关于sqlite - SQLITE填充值具有唯一的随机表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20542038/

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