postgresql - 实现一个以 SEQUENCE 和 CYCLE 递增、具有 MAXVALUE 并仅自动使用 UNIQUE 值的列的最佳方法是什么?
问题描述
所以我可以实现除了唯一性之外的一切:
CREATE SEQUENCE my_sequence
MAXVALUE 5
CYCLE;
ALTER TABLE my_table ADD COLUMN my_column int NOT NULL nextval('my_sequence');
我通过插入 5 条记录并删除第三条记录来测试这一点,结果是 'my_column' 设置为 1、2、4 和 5 的 4 条记录。我想要的是插入另一个 my_table 记录并让 'my_column' 为 3,因为那是下一个“可用”值。相反,它将其设置为 1。
如果我将列更改为:
ALTER TABLE my_table ADD COLUMN my_column int UNIQUE NOT NULL nextval('my_sequence');
然后它仍然尝试在“my_column”中插入值为 1 并引发唯一约束错误。
我理解为什么会这样工作,序列不可能知道表的状态。但是我如何实现这个功能呢?可以用串口完成吗?可以做到吗?
解决方案
推荐阅读
- python - Python中闭包和装饰器的区别
- bash - 在同一函数中获取期望脚本的退出代码
- c# - 尝试对使用模拟任务的方法进行单元测试时出现问题
- heroku - 在 heroku 中添加了 antiword buildpack 但出现错误
- flutter - 如何从 Flutter 对话框返回数据?
- qt - 如何给 TableWidget 的单元格不同的宽度
- reactjs - 反应socket io太多连接错误
- node.js - 查找 - 未找到关系 xxx
- sql - Oracle SQL - 如何显示 2 位小数
- amazon-web-services - AWS-RunShellScript 调用 python 脚本但找不到 python 模块