0

我有users桌子和posts桌子。一个用户有很多帖子。

CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(10));

CREATE TABLE posts (id INT, user_id INT, text TEXT, PRIMARY KEY(id, user_id));

我的问题是,如何创建一个自动递增机制来递增id用户帖子的 ,但仅限于用户(user_id)。

例如,

用户1有 2 个帖子,第一个帖子有 id 1,第二个帖子有 id 2

用户2有 3 个帖子,第一个帖子有 id 1,第二个帖子有 id 2,第三个帖子有 id 3

表格的posts行将如下所示。

SELECT * FROM posts; user_id id text 1 1 'Post one from user 1' 2 1 'Post one from user 2' 2 2 'Post two from user 2' 2 3 'Post three from user 2' 1 2 'Post two from user 1'

我知道这可以通过在两次访问数据库的应用程序级别上实现它来完成,例如查询特定用户的最后一个帖子 id 并基于它创建帖子。但这会在多用户环境中引入冲突。

4

1 回答 1

0

我可能没有正确理解您的问题,但是您可以在插入时通过在插入中使用子查询很容易地增加帖子的 id。

INSERT INTO posts (user_id, id, text) VALUES
(userIdVar, (SELECT max(id) + 1 FROM posts WHERE user_id = userIdVar), postText);
于 2018-04-24T17:40:52.667 回答