为了账号安全,请及时绑定邮箱和手机立即绑定

自定义SERIAL /每组值的自动递增

自定义SERIAL /每组值的自动递增

郎朗坤 2019-11-20 09:56:08
我正在尝试建立一个博客系统,但遇到了一个小问题。简而言之,我的article表格中有3列:id SERIAL,category VARCHAR FK,category_id INTid column很明显是PK,它用作所有文章的全局标识符。category 列很好..类别。category_id用作UNIQUE类别中的ID,因此当前存在UNIQUE(category, category_id)约束。不过,我也想为category_id以自动递增。我想要它,以便每次执行如下查询时INSERT INTO article(category) VALUES ('stackoverflow');我希望category_id根据最新category_id的“ stackoverflow”类别自动填充该列。在我的逻辑代码中实现此目标非常容易。我只是选择最新的num并插入+1,但这涉及两个单独的查询。我正在寻找一种可以在一个查询中完成所有这些操作的SQL解决方案。
查看完整描述

3 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

这个问题已经被问了很多遍了,并且一般的想法在多用户环境中注定会失败 -博客系统听起来就是这样。


所以最好的答案是:不要。考虑另一种方法。


category_id完全从表中删除该列-它不存储任何其他两列(id, category)尚未存储的信息。


您id是一serial列,并且已经以可靠的方式自动递增。


自动递增SQL功能

如果您需要某种category_id无间隙的产品category,请使用以下命令即时生成row_number():


复合键每组行的序列号


查看完整回答
反对 回复 2019-11-20
  • 3 回答
  • 0 关注
  • 494 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信