Php 自动递增两列

Php 自动递增两列,php,mysql,Php,Mysql,我正在尝试根据art_用户id自动增加下表中的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_用户id自动增加下表中的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发布了一篇文章,他的艺术id将是1。他发布的下一个将具有id 2

但如果用户2发布文章,他的艺术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

您增加艺术id的策略不同于自动增加。所以您不能在查询中使用默认值。但是您可以编写
触发器
,它将使用art\u userid在
INSERT
上更新art\u 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列
,以便通过查询指定用户的条目增量文章总数
updatetotal\u articles SET total\u articles=total\u articles+1,其中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开始的唯一值。

在这种情况下,您始终可以使用触发器。阅读有关MyISAM表的部分,我听说使用UNIQUE键将有助于。。。