猿问

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

我正在尝试建立一个博客系统,但遇到了一个小问题。


简而言之,我的article表格中有3列:


id SERIAL,

category VARCHAR FK,

category_id INT

id 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解决方案。


郎朗坤
浏览 495回答 3
3回答

LEATH

这个问题已经被问了很多遍了,并且一般的想法在多用户环境中注定会失败 -博客系统听起来就是这样。所以最好的答案是:不要。考虑另一种方法。category_id完全从表中删除该列-它不存储任何其他两列(id, category)尚未存储的信息。您id是一serial列,并且已经以可靠的方式自动递增。自动递增SQL功能如果您需要某种category_id无间隙的产品category,请使用以下命令即时生成row_number():复合键每组行的序列号
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答