自动递增两列


Auto Increment two columns

我正在尝试根据art_userid自动递增下表中的art_id,这可以在不编写任何额外的php代码的情况下吗?gen_id必须保留,不能移除。我正在使用Mysql和Php

CREATE TABLE `articles` (
        `gen_id` INT(10) NULL AUTO_INCREMENT,
        `art_id` TINYINT(3) NULL DEFAULT '0',
        `art_userid` INT(10) NULL DEFAULT '0',
        `art_title` VARCHAR(150) NULL DEFAULT NULL,
        PRIMARY KEY (`gen_id`)

所以最后,如果用户 1 发布了一篇文章,他的art_id将是 1。他发布的下一个将具有id 2。

但是如果用户 2 发布和文章,他的art_id将再次为 1。他发布的下一个将具有id 2。不是第一个用户的延续art_id。

gen_id | art_id | art_userid | art_title
-----------------------------------------
1         1        1           Title A
2         2        1           Title B
3         1        2           Title A
4         2        2           Title B
5         3        1           Title A
您递

增art_id的策略与自动递增不同。 因此,您不能在查询中使用默认的。但是你可以写TRIGGER,这将使用art_userid INSERT更新art_id。

在这种情况下,

您应该创建一个表,将用户和文章与每个ID链接起来。

因为这里没有自动增量可做,它只是一个数据管理:)

问候

常见的方法是

CREATE TABLE `articles` (
        `id` INT AUTO_INCREMENT, -- entry in table
        `gen_id` INT(10) NULL ,
        `art_id` TINYINT(3) NULL DEFAULT '0',
        `art_userid` INT(10) NULL DEFAULT '0',
        `art_title` VARCHAR(150) NULL DEFAULT NULL,
        PRIMARY KEY(`id`)
)

在表中使用id column,以便指定条目 按查询递增用户的文章总数 UPDATE total_articles SET total_articles=total_articles+1 WHERE userid=1

好吧,我有点解决了它,但少了一列。为此,引擎类型需要为 MyIsam。然后像这样创建:

CREATE TABLE `articles` (
    `art_id` INT(10) NOT NULL AUTO_INCREMENT,
    `art_userid` INT(10) NOT NULL DEFAULT '0',
    PRIMARY KEY (`art_userid`, `art_id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

然后,当您插入art_userid时,您将获得一个唯一的art_id值,从每个用户的 1 开始。