我正在尝试建立一个博客系统,但遇到了一个小问题。简而言之,我的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():
复合键每组行的序列号
- 3 回答
- 0 关注
- 494 浏览
添加回答
举报
0/150
提交
取消