Php 自动递增两列
我正在尝试根据art_用户id自动增加下表中的art_id,这是否可能,而无需编写任何额外的php代码?gen_id必须保留,不能删除。我正在使用Mysql和PhpPhp 自动递增两列,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',
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键将有助于。。。