我正在尝试根据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 开始。